본문 바로가기
웹 개발 이야기

[LINUX] crontab 설정 방법

by Gommin 2023. 3. 9.

php를 이용하여 웹 제작을 하다보면 생각보다 crontab을 이용할 경우가 빈번하게 발생한다.

그래서 오늘은 crontab에 대해 정리한다.

[crontab 설정 방법]

1. shell에 접속한다.

2. crontab -e 를 입력한다.

- 처음 입력했다면 "no crontab for root" 라는 메세지가 나오고 편집기를 선택한다.

- 편집기는 ed, nano, vim basic, vim tiny 중 선택 가능하다.

3. 선택한 편집기 기능을 이용하여 작업을 등록한다.

[crontab -e를 이용 시, 명령어]

crontab -e = 명령어를 등록, 편집 가능

crontab -d = 등록된 명령 삭제 가능

crontab -l = 등록된 작업 리스트 출력

crontab -l -u otheruser : otheruser = otheruser 사용자가 등록한 crontab 리스트 출력

crontab -r = 현재 사용자가 등록한 crontab 전체 삭제

[crontab 시작/재시작 명령어]

service crond start

service crond restart

[작성 방법]

1. 하나의 명령어는 한줄로 작성한다.

2. 주석은 "#"을 이용하여 작성한다.

3. 로그를 남기길 원한다면 "* * * * * doitnow.sh > /var/log/crontab.kog 2>&1" 처럼 작성한다.

4. 크론탭 백업을 원한다면 "00 00 * * * crontab -l > /home/crontab_bak" 처럼 작성한다. (매일 0시에 백업)

[유의사항]

1. 실행파일 sh는 복사하지 않는다. ftp로 복사 후 가져왔을 때 제대로 동작하지 않는다. 정직하게 하나하나 새로 하자

2. 작업 리스트를 편집했다면 "service crond restart"를 입력하여 cron 데몬을 재시작한다.

3. 실행파일은 cron이 제대로 검색 및 실행 가능하도록 "/usr/bin" 또는 "/bin", root에 위치해야한다.

4. 실행파일에 권한을 설정한다. 예) chmod +x dbbackup.sh

5. crontab 동작 확인은 "service crond status" 를 입력하여 확인 가능하다.

6. /etc/crontab 파일을 직접 편집하지 않는다. 직접 편집할 경우 제대로 동작하지 않는다.

["*" 사용법]

* * * * * command to be execcuted

첫번째 별 : minute (00 ~ 59)

두번째 별 : hour (00 ~ 23)

세번째 별 : day of month (1~ 31)

네번째 별 : month (1 ~ 12)

다섯번째 별 : day of week (0 ~ 6) (0 = 일요일)

 

#1분마다 실행
* * * * * test.sh
* * * * * wget --spider https://test.com/test.php > /var/log/cron.sh.log 2>&1

#5분마다 실행
*/5 * * * * wget --spider http://test.com/test.php > /var/log/cron.sh.log 2>1

#동일 프로세스를 10분마다 실행
*/10 * * * * test.sh

#매시 15분마다 실행
15 * * * * test.sh

#1시간마다 실행
0 * * * * test.sh

#2시간마다 실행
0 */2 * * * test.sh

#오전 11시와 오후 4시마다 실행
00 11,16 * * * /home/ramesh/bin/incremental-backup

#근무시간(9시 ~ 오후 6) 내 매시간 실행
00 09-18 * * * /home/ramesh/bin/check-db-status

#주말을 제외하고 근무 시간에만 매시간 실행
00 09-18 * * 1-5 /home/ramesh/bin/check-db-status

#5시간(18000sec) 후 크론 실행 자동 중단
30 23 * * *   timeout 18000  /usr/bin/php /var/www/ul/prices_all.php >> /var/www/ul/log/prices_all.txt

 

※ 특정 크론 명령을 강제 중단

- 크론 명령 실행 후 보안 등의 이유로 제대로 실행되지 않고 실행 대기 상태에 놓이면 이러한 명령들이 쌓여서 매우 많은메모리를 사용하게 된다.

- 특정 명령을 수행하지 못하고 대기 상태라면 아래의 명령어를 입력하여 프로세스를 강제 종료 가능하다.

pkill -f 'wget -q -O - https://happist.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1'

댓글