为什么 /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 中的条目由 run-parts 机制运行(man run-parts 了解更多信息)。 run-parts 对于它认为有效的文件名是很挑剔的。

例如,为脚本添加扩展名将使其无效并导致作业无法运行。

将作业添加到 /etc/cron.hourly(或 .daily、.weekly 等)时,请始终通过发出以下命令来测试 run-parts 是否实际运行它: run-parts --test /etc/cron.hourly

答案2

/etc/cron.hourly/etc/cron.daily/etc/cron.weekly、中的脚本/etc/cron.monthly旨在在特定时间运行,并且不采用经典的 crontab 格式。或者简单地说,它们是脚本,而不是 crontab 格式的文件。

对于 /etc/cron.hourly,它们每小时运行一次。

您必须使用 crontab -e 在 crontab 中插入该行。要在 /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 ....

相关内容