当我注意到我在我的 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
里面没有脚本。
关于可能出错的任何想法?
cron.weekly
脚本以run-parts
跳过所有扩展名的文件开始。重命名runcheck.sh
为runcheck
,它应该做comm1 || comm2 || comm3 || comm4
将执行直到返回第一个 retval = 0(从左到右)。其余的链式命令由解释器优化,根本不执行
如果
test -x /usr/sbin/anacron
retval 返回零,则不会执行其他命令。