当我注意到我放置在 Debian6 服务器上的 /etc/cron.weekly 中的备份脚本未被执行时,我将这个小脚本放入其中,以查看每周的 cronjob 是否完全执行:
#!/bin/bash
echo 'CRON RAN' > /var/log/cron-weekly-runcheck.log
另存为
-rwxr-xr-x 1 root root 64 Jul 15 02:14 /etc/cron.weekly/runcheck.sh
今天我检查时,发现它应该创建的日志文件并不存在。crontab
如下所示(据我所知,这应该是默认的 debian6 crontab):
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 * * 1 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 )
所有日志文件中显示的每周 cronjob 内容都是这一行:
Jul 16 06:47:01 wtwrp /USR/SBIN/CRON[29272]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))
附注:cron.daily
由于 logrotate 可以工作,所以它似乎可以工作。cron.hourly
其中没有脚本。
对于可能出现的问题您有什么想法吗?
答案1
脚本cron.weekly
由 启动run-parts
,跳过所有扩展名为的文件。重命名runcheck.sh
为runcheck
,它应该可以
答案2
comm1 || comm2 || comm3 || comm4
将被执行,直到第一个 retval = 0 返回(从左到右)。其余的链接命令由解释器优化,根本不执行
如果test -x /usr/sbin/anacron
返回零作为 retval,则不会执行其他命令。