본문 바로가기
728x90

전체 글549

DB 유저 생성 및 권한부여 SELECT * FROM user; mysql db에서 접근할 수 있는 host와 user 정보를 확인 할 수 있다. CREATE USER 'tqtdb'@'localhost' identified by 'tqtdb1!'; CREATE USER 'tqtdb'@'112.16.71.%' identified by 'tqtdb1!'; // 특정아이피만..192.11.11.18로 해도됨 DROP USER 'tqtdb'@'localhost'; localhost 접근 권한만 주어진 유저 tqtdb을 생성하고 패스워드는 tqtdb1! 이다. (localhost 대신에 %를 넣으면 외부에서 접근가능) drop할때 저런식으로 다 붙여줘야 된다. SELECT * FROM db; 으로 유저별로 권한 확인 가능. 위의 user테이.. 2023. 1. 8.
리눅스 소스&디렉토리 백업 쉘 # 2020.03.19 Source Backup Shell #! /bin/bash if [ $# = 0 ] then echo backup shell echo ex} backup.sh exam.c echo ex} backup.sh exam else echo backupstart $1 if [ $1 = ~ ] # home check then echo dont use ~ exit fi if [ -d $1 ] # dir check then cp -rp $1 $1.`date +%Y%m%d` tar -cvf $1.`date +%Y%m%d`.tar $1.`date +%Y%m%d` rm -r $1.`date +%Y%m%d` else # file cp -p $1 $1.`date +%Y%m%d` fi fi 전역에서 사용하.. 2023. 1. 8.
여러 언어의 온라인 컴파일 가능 사이트 https://paiza.io/en 2023. 1. 8.
데몬 프로세스를 이용한 배치(batch) 기존에 소스코드를 이용해서 만들었다.(블로그 내에 있는 소스) 배치를 관리하는 테이블을 따로 만들어서 그 시간이 되면 알아서 배치가 돌아간다. 배치의 진행은 curl로 데이터를 txt파일로 떨구고 parsing이라는 함수에 들어가 테이블 스키마에 맞게 데이터를 insert해준다. 중간에 잘안됐는데 그 이유는 chdir("/")에 있었다. 경로를 루트로 설정해버리기 때문이다. 기존 소스에서는 상대경로로 들어갔었다. 절대경로로 맞췄더니 잘돌아간다. 위의 오류를 해결하고 나니깐 데몬프로세스가 강제종료되는 현상도 없어졌다. int main(int argc, char *argv[]) { int ret; int pid; MYSQL *conn_ptr; conn_ptr = db_init("ip", "id", "pwd".. 2023. 1. 8.
crontab 크론탭(배치, batch) 배치(batch)를 돌리기 위해서 간단히 크론탭을 사용해봤다. 유의사항은 * * * * * test.sh 라는 실핼시켜야할 크론탭잡이 잇다면 * *의 사이는 띄어쓰기로 구분되어있어야 한다. 아니면 안돌아간다. 실행파일에 바로 붙어서 실행이 잘안되서 쉘로 간단히 만들었다. /var/mail 이쪽에 print를 해놓으면 알아서 떨어진다. insert성공했을시 success print하면 들어간다. ​ crontab -e 로 작성 15 * * * * source /home/changjo/curl/parsing/test.sh ​ test.sh #!/bin/bash cd /home/changjo/curl/parsing ./a.out 정리가 잘되어있는 링크 https://jdm.kr/blog/2 ​ 2023. 1. 8.
c와 mariadb auto commit off / on 쿼리를 한번 할때마다 commit 하면 상당한 시간이 소요된다. 그렇기 때문에 오토커밋을 풀고 한번에 커밋을 해준다음에 다시 오토커밋을 on해준다. mysql_query(conn_ptr, "SET AUTOCOMMIT = 0"); // auto commit off // 소스 구현 mysql_query(conn_ptr, "COMMIT"); // 소스에서 실행시킨 쿼리들 한번에 commit mysql_query(conn_ptr, "SET AUTOCOMMIT = 1"); // auto commit on 2023. 1. 8.
c와 mariadb INSERT시에 한글 깨짐 현상 전부 UTF8로 세팅해서 했다곤 생각하는데 직접 INSERT 할때 한글이 깨져서 나왔다. 뭐가 됐든 코드 내에서 다시한번 세팅을 해줬다 ​ db_conn.c #include "changjo.h" MYSQL *db_init(char *ip, char *user, char *pw, char *db) { conn_ptr = mysql_init(NULL); if(!conn_ptr) { printf("error"); exit(0); } conn_ptr = mysql_real_connect(conn_ptr, ip, user, pw, db, 0, NULL, 0); if(!conn_ptr) { printf("cannot connect : %s\n", mysql_error(conn_ptr)); } mysql_set_ch.. 2023. 1. 8.
pthread에 관한 나만의 고찰 1. pthread_exit 를 한 후에는 printf등 함수가 안먹는다. 2. pthread_create 실행 라인에서 멈춰있지 않는다. -> 함수를 다 실행하고 밑에 라인을 실행하는게 아니다. 그래서 sleep을 주는것이다(thread작업이 끝날때까지 기다려주는 것, pause사용해도돼). sub thread들이 끝날때까지 기다려주지 않고 main프로세스가 죽어버리면 thread는 자신의 기능을 다하지 못하고 죽어버린다. 3. pthread_join을 통해서 종료를 기다릴 수 있다 -> 데몬프로세스일때 스레드종료 후 프로세스 종료를 하지 않기 때문에 각각의 thread를 detach로 죽인다.(업무) ​ 번외로 밑에 있는 소스 코드를 실행하기 위한 gcc gcc -o a.out test.c -lpth.. 2023. 1. 8.
pthread 스레드 종료시점에 관한 이야기 일반적으로 pthread_create를 통해서 쓰레드가 생성되고 다 사용된 쓰레드는 해당 쓰레드를 호출한 곳에서 pthread_join을 통하여 해당 쓰레드의 자원을 해제하여 종료하는 흐름을 갖는다고 한다.. ​ ​ 프로세스 흐름을 보며 pthread의 종료시점을 찾던 중 pthread_detach에 관해 찾았다. ​ ​ 이미 생성된 쓰레드에게 detach 옵션을 주어 독립적으로 자원을 반환 하도록 하는 방법이다. ​ ​ function { pthread_create(); ​ pthread_detach (pthread_id); pthread_exit ((void *)NULL); } ​ https://www.morenice.kr/75 ​ 2023. 1. 8.
Log에 라인번호 찍기(+파일명, +함수명) #include 를 이용하는 방법이 있다. ( /var/log/messages-날짜) ​ main.c #include #include // syslog사용하기위해서 int main() { printf(" 파일명: %s \n 라인번호: %d \n 함수명 : %s\n", __FILE__, __LINE__, __FUNCTION__); syslog(LOG_ERR, " 파일명: %s \n 라인번호: %d \n 함수명 : %s\n", __FILE__, __LINE__, __FUNCTION__); // 헤더파일 선언 되어있어야함 return 0; } https://qvil.github.io/linux/c-syslog/ ​ 2023. 1. 8.
728x90