cron 在错误的时间运行

cron 在错误的时间运行

我有一个 /etc/crontab 文件。除了日常任务外,它几乎是默认文件:

'# m h dom mon dow user  command  
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly  
00 2    * * *   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 )

因此,我希望每日任务在凌晨 2:00 执行。问题是它们在早上 7:30(有时是早上 8:30)执行。我检查了时区设置和时钟,一切正常。crontab 文件有什么问题?

答案1

按照您的配置,该命令test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )实际上将在凌晨 2:00 执行,但中的命令/etc/cron.daily可能不会执行!

让我们更仔细地看一下该命令:

  • 第一个命令test -x /usr/sbin/anacron检查命令是否anacron可以执行,如果/usr/sbin/anacron不可执行则“失败”(返回 1)
  • 方法||是:如果第一个命令失败,则执行第二个命令
  • 第二条命令( cd / && run-parts --report /etc/cron.daily )将执行目录中的所有任务/etc/cron.daily,而不anacron以任何方式涉及

简而言之:仅当命令不可用时cron才会运行任务!是一个独立的程序,它有自己的启发式方法来确定何时执行任务。/etc/cron.daily/usr/sbin/anacronanacron

为了让它cron在给定的时间执行任务/etc/crontab只需卸载anacron软件包!修改/etc/crontab命令并不是一个好主意,因为中的任务/etc/cron.daily将每天执行两次:一次由 执行cron,一次由 执行anacron

相关内容