출처
설명
정기적으로 지정한 시간에 실행하고 싶은 명령어를 등록합니다. 스크립트를 등록해도 됩니다. 등록한 계정의 사용자로 실행됩니다. 다른 사용자의 크론탭을 등록하려면 -u옵션을 이용합니다.
주요 옵션
옵션 | 설명 |
---|---|
-l | 등록된 명령어 리스트 확인 |
-e | 등록된 명령어를 수정 |
-r | 등록된 크론탭을 삭제 |
-u | 크론탭을 등록할 사용자 지정 |
사용 예제
크론탭 등록
-e 옵션으로 실행하면 크론탭을 등록하기 위한 파일이 열립니다. vi에디터와 동일한 명령으로 필요한 명령어를 등록할 수 있습니다.
# 크론탭을 등록
$ crontab -e
# 등록된 크론탭을 확인
$ crontab -l
크론탭 주기
크론탭을 등록할 때는 실행하고자 하는 주기와 명령어를 입력합니다. 주기는 분, 시, 일, 월, 요일의 형태로 입력합니다. *는 모두를 의미합니다. 매분, 매시, 매일, 매월, 모든 요일에 실행하고 싶을 때 사용하면 됩니다.
주기 | 비고 |
---|---|
분 | 0 ~ 59 |
시 | 0 ~ 23 |
일 | 1 ~ 31 |
월 | 1 ~ 12 |
요일 | 0 ~ 7(0, 7이 일요일) |
# 입력 형태
분 시 일 월 요일 명령어
# 매 50분에 time.sh 실행
50 * * * * /mnt/usr/time.sh
# 매일 1시에 log 로 끝나는 파일을 찾아서 find.log 파일로 저장
0 1 * * * find -name '*.log' ./ >> /test/log/fin.log
# 5분 마다 program.sh 실행
*/5 * * * * /home/user/program.sh
# 4-10 시 사이에 1시간마다 program.sh 실행
0 4-10/1 * * * /home/user/program.sh
# 매일 1시, 3시에 program.sh 를 실행하고 로그를 저장
# 크론탭에 입력할 때 %는 오류가 발생하기 때문에 역슬래쉬(\)로 감싸 주어야 함
0 1,3 * * /home/user/program.sh >> /home/user/logs/`date -u +\%Y\%m\%d.\%H\%M.log` 2>&1
echo 로 크론탭 등록
크론탭을 일괄로 등록하고 싶을 때 echo 명령을 이용하여 처리할 수 있습니다.
/var/spool/cron/유저명
에 유저별 크론탭이 있습니다.
여기에 넣어주면 crontab -e
와 동일한 효과를 얻을 수 있습니다.
sudo bash -c 'echo \"
# hadoop log cleansing
0 1 * * * find /var/log/hadoop -not -name \"*.gz\" -type f -mtime +2 -exec gzip {} \;
0 1 * * * find /var/log/hadoop -name \"*.gz\" -mtime +14 -delete \" >> /var/spool/cron/user_name'
크론탭 위치
크론탭 파일은 OS에 따라 위치가 다를 수 있습니다.
- CentOS
- /var/spool/cron/유저명
- Ubuntu
- /var/spool/cron/crontab/유저명