1. 크론탭 기본 (crontab basic)
명령어를 입력후 콜론(:) 입력 후에 wq 를 입력해 크론탭을 갱신
$ crontab -e
크론탭 확인
$ crontab -l
크론탭 삭제
$ crontab -r
- * : 모든 값을 뜻합니다.
- ? : 특정한 값이 없음을 뜻합니다.
- - : 범위를 뜻합니다. (예) 월요일에서 수요일까지는 MON-WED로 표현
- , : 특별한 값일 때만 동작 (예) 월,수,금 MON,WED,FRI
- / : 시작시간 / 단위 (예) 0분부터 매 5분 0/5
- L : 일에서 사용하면 마지막 일, 요일에서는 마지막 요일(토요일)
- W : 가장 가까운 평일 (예) 15W는 15일에서 가장 가까운 평일 (월 ~ 금)을 찾음
- # : 몇째주의 무슨 요일을 표현 (예) 3#2 : 2번째주 수요일
2. 주기 결정
* * * * *
분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7)
순서대로 분-시간-일-월-요일 순
요일에서 0과 7은 일요일 1부터 월요일이고 6이 토요일
3. 주기별 예제
* * * * * | 매일 매분마다 실행 |
5 * * * * | 매일 매시간 05분에 실행 |
*/5 * * * * | 매일 5분마다 실행 |
*/10 * * * * | 매일 10분마다 실행 |
0 18 * * * | 매일 18시 00분에 실행 |
15 18 * * * | 매일 18시 15분에 실행 |
* 1 * * * | 매일 01시 00분 ~ 01시 59분 사이에 매분마다 실행 |
0 */1 * * * | 매일 1시간 간격으로 실행 |
0 */12 * * * | 매일 12시간마다 실행 |
0 6,12 * * * | 매일 06시, 12시에 실행 |
5 3-5 * * * | 매일 03시 ~ 05시 사이 매시간 10분에 실행 (03시 05분, 04시 05분, 05시 05분) |
15 6 15 * * | 매달 15일 06시 15분에 실행 |
30 3 1,15 * * | 매달 1일과 15일 03시 30분에 실행 |
0 18 * * 1 | 매주 월요일 18시 00분에 실행 |
0 6,12 * * 0,3 | 수, 일요일마다 06시, 12시에 실행 |
0 21 * * 1-6 | 월 ~ 토 21시 00분에 실행 |
0 11 11 11 11 ? | 11월 11일 11:11마다 |
4.2. 주석을 달아봅시다.
# 주석 #
#--------------------#
# 이것은 주석입니다. #
#--------------------#
# 을 입력해서 그 뒤로 나오는 모든 문자를 주석 처리
5. 크론 로깅 (cron logging)
크론탭을 사용해서 정기적으로 작업을 처리하는 것은 좋은데, 해당 처리 내역에 대해 로그를 남기고 싶을 때
* * * * * /home/script/test.sh > /home/script/test.sh.log 2>&1
위처럼 작성하면 매분마다 test.sh.log 파일이 갱신 되어 작업 내용이 어떻게 처리 되었는지 알 수 있다.
만약 2>&1 을 제거하면 쉘스크립트에서 표준 출력 내용만 나옴
로그가 과도하게 쌓이면 아래처럼 사용
* * * * * /home/script/test.sh >> /home/script/test.sh.log 2>&1
반대로 로그는 필요 없는 크론일때는 이렇게 사용
* * * * * /home/script/test.sh > /dev/null 2>&1
6. 크론탭 백업 (crontab backup)
crontab -l > /home/bak/crontab_bak.txt
크론탭 내용을 txt 파일로 만들어 저장
아래는 매일 오후 11시 50분에 백업해두는 명령어
50 23 * * * crontab -l > /home/bak/crontab_bak.txt