개발햄비

[Linux] Crontab사용법 본문

개발/Linux

[Linux] Crontab사용법

개발햄 2021. 4. 18. 18:53

CronTab이란

Crontab은 스케줄을 관리하는 커맨드 입니다
즉 "특정 시간에 특정 작업을 하도록" 하는 것 입니다
목요일 10시에 리눅스 작업을 하고싶은 경우 CronTab 스케줄 등록을 해주시면 됩니다.

cronTab

$ crontab -e

텍스트를 입력할 수 있는 창이 뜹니다. 여기서 cronTab을 설정할 수 있고 esc 를 누른 후
:q (저장하지 않고 종료)
:q! (저장하지 않고 강제 종료)
:wq (저장 후 종료)
를 통해서 편집기를 빠져나오거나 갱신할 수 있습니다

$ crontab -l

내용만 확인하고 싶을경우 (cat 명령어와 비슷) 위 명령어를 치면 등록된 스케줄이 나옵니다.

$ crontab -r

내용을 삭제하고 싶은 경우 위의 명령어를 입력하면 됩니다 -r(emove)

CronTab * 의미

*      *      *      *      *
분(0-59)  시간(0-23)  일(1-31)  월(1-12)   요일(0-7)

등록된 크론탭을 보면 ***** 으로 표시된 것을 볼수 있는데 *의 의미는 위의 예제와 같습니다.

매 분 실행하기

# 매 분 test.sh 실행
* * * * * test.sh

한시간 마다 실행

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

매주 금요일 오전 5시 10분에 test.sh 를 실행

# 매주 금요일 오전 5시 10분에 test.sh 를 실행
10 5 * * 5 test.sh

오전 11시와 오후 4시마다 실행

# 오전 11시와 오후 4시마다 실행 
00 11,16 * * * test.sh

주말을 제외하고 평일 09시부터 18시에 매 시간 당 실행

# 주말을 제외하고 평일 09시부터 18시에 매 시간 당 실행
00 09-18 * * 1-5 test.sh

매일 1시 0분부터 30분까지 매분 tesh.sh 를 실행

# 매일 1시 0분부터 30분까지 매분 tesh.sh 를 실행
0-30 1 * * * test.sh

매 30분마다 test.sh 를 실행

# 매 30분마다 test.sh 를 실행
*/30 * * * * test.sh

CronTab 로깅

* * * * * test.sh > /home/test.sh.log

CronTab 5시간 뒤 종료 18000(5시간)

30 23 * * *   timeout 18000 test.sh.log

CronTab 강제종료

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

Crontab 백업명령

# 23시50분에 매일 /home/bk/안에 crontab_bak.txt이름으로 백업
50 23 * * * crontab -l > /home/bk/crontab_bak.txt