/etc/cron.hourly/myjob이 작동하지 않는 이유는 무엇입니까?

/etc/cron.hourly/myjob이 작동하지 않는 이유는 무엇입니까?

/etc/cron.hourly에 파일이 있습니다:

-rwxr-xr-x  1 root root  117 Mar  8 20:33 myjob

나는 일한다:

3,18,33,48 * * * * /usr/bin/python /home/me/src/myproject/src/manage.py myjobs > /home/me/log
3,18,25,27,29,31,33,35,37,48 * * * * /bin/echo "testing....." > /home/me/log

/etc/crontab:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

로그 파일이 나타나지 않는 이유는 무엇입니까? 빠진 것이 있나요? myjob은 매시간 3,18,...분에 실행되어야 합니다.

답변1

cron.hourly의 항목은 실행 부분 메커니즘에 의해 실행됩니다(자세한 내용은 man 실행 부분 참조). run-parts는 유효한 것으로 간주되는 파일 이름에 대해 까다롭습니다.

예를 들어, 스크립트에 확장을 추가하면 해당 확장이 무효화되고 작업 실행이 실패하게 됩니다.

/etc/cron.hourly(또는 .daily, .weekly 등)에 작업을 추가할 때 항상 run-parts --test /etc/cron 명령을 실행하여 run-parts가 실제로 해당 작업을 실행하고 있는지 테스트하세요. 매시간

답변2

/etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly의 스크립트는 /etc/cron.monthly특정 시간에 실행되도록 설계되었으며 일반적인 crontab 형식이 아닙니다. 또는 간단히 말해서 crontab 형식 파일이 아닌 스크립트입니다.

/etc/cron.hourly의 경우 매시간 실행됩니다.

crontab에 행을 삽입하려면 crontab -e를 사용해야 합니다. /etc/cron.hourly에서 실행하려면 5개의 시간 필드를 제거하여 매시간만 실행해야 합니다(예: 3,18,33,48 * * * * 제거).

따라서 귀하의 경우 스크립트를 /etc/cron.dmyjob의 내용으로 이동하거나 crontab 파일에 추가할 수 있습니다. /etc/cron.hourly 디렉토리에서 가져옵니다.

/etc/crond.d로 돌아가서 다음과 같은 파일에 넣어야 합니다.

3,18,33,48 * * * * root /usr/bin/python ....

관련 정보