为何我的 cron 任务不运行?

为何我的 cron 任务不运行?

有人告诉我,要让 cron 任务每小时运行一次,你只需要将一个 shell 脚本放入/etc/cron.hourly

所以我尝试添加

#!/usr/bin/env sh
firefox www.superuser.com

放入一个文件test.sh并将其放入/etc/cron.hourly/目录中。然后我chown将其放入根目录并chmod +x执行该操作。如果我直接执行它,它会按预期执行。但它不会每小时自动执行一次。我错过了什么?


编辑: 我把脚本改得更简单了,只是

#!/usr/bin/env sh
echo foo > ~/sandpit/bar.txt

然后我等了一个小时,这是我的/var/log/syslog

Nov  1 18:45:01 wim-ubuntu ntpdate[1719]: adjust time server 91.189.94.4 offset -0.149832 sec
Nov  1 18:46:27 wim-ubuntu kernel: [  106.562460] exe (2058): /proc/2058/oom_adj is deprecated, please use /proc/2058/oom_score_adj instead.
Nov  1 19:17:01 wim-ubuntu CRON[4204]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Nov  1 20:17:01 wim-ubuntu CRON[4793]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

但是我的文件尚未创建,所以我猜我的 cron 作业仍然没有运行。


编辑2:

我删除了扩展,现在我有了 cron 实际找到的脚本。但它们因未知原因而失败(详情如下)

wim@wim-ubuntu:/etc/cron.hourly$ ll
total 28
drwxr-xr-x   2 root root  4096 2011-11-02 01:32 ./
drwxr-xr-x 150 root root 12288 2011-11-02 01:58 ../
-rw-r--r--   1 root root   102 2011-09-20 10:04 .placeholder
-rwxr-xr-x   1 root root    49 2011-11-01 19:00 test*
-rwxr-xr-x   1 root root    48 2011-11-01 19:23 test2*
wim@wim-ubuntu:/etc/cron.hourly$ run-parts --test /etc/cron.hourly
/etc/cron.hourly/test
/etc/cron.hourly/test2
wim@wim-ubuntu:/etc/cron.hourly$ date
Wed Nov  2 02:25:39 EST 2011
wim@wim-ubuntu:/etc/cron.hourly$ cat test
#!/usr/bin/env sh
firefox www.stackoverflow.com

wim@wim-ubuntu:/etc/cron.hourly$ cat test2
#!/usr/bin/env sh
echo foo > ~/sandpit/bar.txt

wim@wim-ubuntu:/etc/cron.hourly$ tail -4 /var/log/syslog
Nov  2 02:01:33 wim-ubuntu AptDaemon: INFO: Quitting was requested
Nov  2 02:17:01 wim-ubuntu CRON[8249]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Nov  2 02:17:01 wim-ubuntu CRON[8248]: (CRON) error (grandchild #8249 failed with exit status 1)
Nov  2 02:17:01 wim-ubuntu CRON[8248]: (CRON) info (No MTA installed, discarding output)

答案1

某些版本的 cron 不运行带有文件扩展名的脚本,因此请尝试重命名脚本(例如:mv test.sh test)。

您可以使用此测试检查 cron 将运行什么(它实际上并不运行文件):

run-parts --test /etc/cron.hourly

答案2

我仍然不确定为什么 /etc/cron.hourly 中的作业无法运行。但我能够通过命令手动添加它们,以另一种方式安排它们crontab -e

相关内容