리눅스에서 crontab은 시킴말(명령어)과 예약 시간을 미리 넣어 두어 제때에 작업을 수행하게 한다. crontab에는 작업을 수행하지 못했다면 전자 우편으로 알려 주는 기능이 있다. 다음은 문제가 있을 때에 받을 수 있는 편지이다.

제목 : Cron <root@​host> root run-parts /etc/cron.​hourly
내용 : /bin/bash: root: command not found

  위 편지는 /etc/cron.hourly에 등록된 작업들을 실행하지 못했음을 알리고 있다. crontab에 등록한 작업 목록의 형식이 잘못되어 있으면 이런 편지가 자꾸 올 수 있다.

  이럴 때에 crontab -e로 본 작업 목록은 다음과 같은 꼴일 것이다.

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

  흔히 알려진 crontab 등록 형식은 '분 시 날 달 요일 해 사용자 시킴말'이다.주1 위 작업 목록이 /etc/crontab 파일에 담겨 있다면, 'crontab /etc/crontab'으로 작업 목록을 crontab에 넣을 때는 문제가 없다. 파일로 작업 목록을 넣을 때는 각 작업을 수행하는 서로 다르게 할 수 있다.

  하지만 'crontab -e'로 편집할 때는 crontab이 지금 접속한 사용자를 예약 작업을 올리는 사용자로 여긴다. 그래서 사용자 이름을 뺀 '분 시 날 달 요일 해 시킴말' 꼴로 넣어야 한다. 사용자 이름(root)이 들어가면 crontab이 사용자 이름을 시킴말로 받아들이므로, 리눅스는 그런 시킴말을 찾을 수 없다고 알린다.

  crontab -e로 넣는 작업 목록은 아래처럼 사용자 이름(root)을 빼야 한다.

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * run-parts /etc/cron.hourly
02 4 * * * run-parts /etc/cron.daily
22 4 * * 0 run-parts /etc/cron.weekly
42 4 1 * * run-parts /etc/cron.monthly

<주석>
  1. 해(연도)는 꼭 들어가야 하는 항목이 아니어서 거의 넣지 않는다. back
2012/02/23 13:35 2012/02/23 13:35
얽힌 글타래
<무른연모 / 리눅스> 글갈래의 다른 글
글 걸기 주소 : 이 글에 다른 글을 걸 수 없습니다

덧글을 달아 주세요