posted by 귀염둥이채원 2018. 11. 27. 01:00
  • 프로세스 예약 데몬
  • 리눅스용 작업 스케줄러
  • 특정시각에 명령어가 수행되도록 등록가능
  • 구성: crond(데몬) + crontab(제어프로그램) = cronie(패키지)
  • 로그: /var/log/cron에 변경/수행 이력이 기록됨

등록형식

*    *    *    *    *  수행할 명령어
┬   ┬   ┬   ┬   ┬
│    │    │    │    │
│    │    │    │    │
│    │    │    │    └───────── 요일 (0 - 6) (0 =일요일)
│    │    │    └────────── 월 (1 - 12)
│    │    └─────────── 일 (1 - 31)
│    └──────────── 시 (0 - 23)
└───────────── 분 (0 - 59)
→ 이렇게 설정하면 매 1분마다 작업 수행
→ 각 자리는 "분시일월요"를 뜻함

예시

* * * * * /root/every_1min.sh
→ 매 1분마다 /root/every_1min.sh 를 수행 (하루에 1440회[1])
15,45 * * * * /root/every_30min.sh
→ 매시 15분, 45분에 /root/every_30min.sh 를 수행 (하루에 48회[2])
*/10 * * * * /root/every_10min.sh
→ 10분마다 /root/every_10min.sh 를 수행 (하루에 144회[3])
0 2 * * * /root/backup.sh
→ 매일 02:00에/root/backup.sh 를 수행 (하루에 1회)
30 */6 * * * /root/every_6hours.sh
→ 매 6시간마다 수행(00:30, 06:30, 12:30, 18:30)
30 1-23/6 * * * /root/every_6hours.sh

 

→ 1시부터 매 6시간마다 수행(01:30, 07:30, 13:30, 19:30)

 

 

현재 사용자
[root@monkey ~]# crontab -l
no crontab for root
다른 사용자
[root@monkey ~]# crontab -l -u testuser
no crontab for testuser

직접 등록

crontab -e

vi 편집기로 현재 사용자에 대한 cron작업의 확인/수정을 직접 할 수 있다.

현재 사용자의 예약작업을 모두 삭제

crontab -r
실행예시
[root@monkey ~]# crontab -l
* * * * * /root/a.sh
* * * * * /root/b.sh
* * * * * /root/c.sh
[root@monkey ~]# crontab -r
[root@monkey ~]# crontab -l
no crontab for root

 FAQ

 
  1) cron 설정한 후에는 crond 데몬을 재실행해야 하나요?

  아닙니다. crontab -e 으로 설정 후 빠져나오면 바로 적용됩니다.

2) truefeel 사용자는 cron을 못 쓰게 하고 싶습니다.

  /etc/cron.allow : 허용할 사용자 ID 목록
  /etc/cron.deny  : 거부할 사용자 ID 목록

  cron.allow 파일이 있으면 이 파일에 들어있는 ID만 사용 가능
  cron.deny  파일이 있으면 이 파일에 들어있는 ID는 사용 불가

  따라서 cron.deny에 truefeel ID를 추가해주면 됩니다.

3) > /dev/null  2>&1 이 무슨 뜻입니까?

  지정한 명령어 처리 결과와 발생할지 모르는 에러메시지를 출력하지 않고 모두 버린다는(/dev/null)는
  뜻입니다. 만약 결과와 에러를 파일로 저장하려면 /dev/null 대신 파일명을 적어주면 됩니다.