정기적인 반복작업이 필요한 경우 cron을 이용하면 해결 할 수 있다.
cron은 crontab 명령을 이용하여 사용할 명령을 입력해 놓으면 된다.
crontab 으로 등록된 내용은 /var/spool/cron/UserID, 혹은 시스템에 따라 /var/spool/cron/crontab/UserId 의 형태로 저장한다.(그러나 이 파일을 직접 편집할 수는 없다)
/etc/cron.allow 에 해당 UserId 가 존재해야 crontab 사용이 가능하다.
crontab -l : 현재의 crontab 의 내용을 표준출력으로 보여준다
crontab -r : 현재의 crontab 내용을 지운다.
crontab -e : 현재의 crontab 내용을 편집한다.
crontab 의 예제 내용
0 2 15 jan,jul sun sh runcron
crontab 은 6개의 필드로 구성된다.
minute hour day month dayOfWeek command
즉
1. 제일 앞의 0 은 매시 정각에 실행해라는 의미,
2. 다음 2는 매일 2시, "0 2" 를 함께 보면 매일 2시 정각에 실행.
3. 15 > 매월 15일에 실행, "0 2 15" 는 매월 15일 2시 정각에 실행.
4. jan,jun > 매년 1월과 7월에 실행.
5. sun ==> 매주 일요일에 실행. "0 2 15 jan,jul sun"는 매년 1월 15일이 일요일인경우 2시 정각에 실행 또는 7월 15일이 일요일인 경우 2시 정각에 실행해라는 의미
6. sh runcron 은 정해진 시각에 실행할 명령어 이다.
즉 각 필드는 and 조건이고 각 필드내에서 ","는 or 조건을 만족하는 경우에 해당 명령어는 실행이 된다.
jan,jul 은 1,7로 표기하기도 하며, 요일은 sun(0),mon(1)...로 표기할 수도 있다.
매일 오전 1시에 명령은 실행하고자 하는 경우
0 1 * * * sh runcron 과 같이 하면된다. * 는 모두의 의미가 된다.
매월 1일부터 15일 까지 오전 2시 정각에 실행하기를 원하는 경우
0 2 1-15 * * sh runcron 과 같이 "-"을 사용할수 도 있다.
0 2 */5 * * sh runcron 처럼 "/"를 사용하면 매 5일 마다, 즉 1,6,11,16일 등에 실행하게 된다.
cron에 등록하기 위해서는
crontab -e 옵션을 사용하여 편집창에서 내용을 편집 후 등록한다.
등록된 cron 내용을 보길 원하는 경우 crontab -l 로 하면 된다.
cron은 실행결과에 대해 메일, 표준출력, 표준에러출력의 방법을 지원한다.
0 2 15 jan,jul sun sh runcron >> /home/sjkang/cronlog.log
로 하게되면 실행결과를 cronlog.log 파일에 계속 추가하여 저장하게된다.
"0 2 15 jan,jul sun sh runcron >> /home/sjkang/cronlog.log" 이 내용을 crontab.txt 라는 파일로 저장하고
crontab crontab.txt 라고 하면 crontab.txt 의 내용이 cron으로 등록된다.