当我注意到我放在Debian6服务器上的/etc/cron.weekly中的backupscript没有执行时,我把这个小脚本放在它里面,看看每周的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
当我今天检查时,它应该创build的日志文件不存在。
crontab看起来像下面这样(据我所知,这应该是默认的debian6 crontab):
SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # mh 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,则不会执行其他命令。