如何检查我的cron作业是否被执行?

我希望我正确地问这个问题。 我试图通过nano /etc/crontab运行我的服务器上设置的所有作业我看到的列表:

 # mh dom mon dow user command 27 * * * * root cd / && run-parts --report /etc/cron.hourly 58 15 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 0 15 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 20 15 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) # 

是否有可能执行crontab启动所有这些工作,或迫使他们跑?

我试图确认他们正在运行。

如果你想检查它们是否被执行,使用:

 grep -i cron /var/log/syslog 

只要做一下cron就行。

  • 运行部分-v /etc/cron.daily
  • 运行部分-v /etc/cron.weekly
  • 等等

-v在运行之前打印脚本名称

如果您只想检查cron是否正在运行,则可以执行以下操作:

 service cron status 

这个问题实际上是关于anacron ,它运行这些循环的cron作业。

首先,确保您的anacrontab文件具有有效的语法。 如果你什么都看不到的话,那就好了:

 /usr/sbin/anacron -T 

接下来,您可以运行每小时,每天,每周和每月运行的所有脚本。 这可能是很多,所以看看/etc/cron.{hourly|daily|weekly|monthly}看看会发生什么。 运行它们全部:

 sudo su - cd / && run-parts --report /etc/cron.hourly cd / && run-parts --report /etc/cron.daily cd / && run-parts --report /etc/cron.weekly cd / && run-parts --report /etc/cron.monthly 

最后看看anacron的调度系统是否正常工作。 你可以这样做:

 /usr/sbin/anacron -n -f cron.monthly 

-n表示现在运行作业, -f表示强制,忽略时间戳)。 这将运行每月的工作。 它将在后台静静地运行,并且当工作完成时您将收到一封电子邮件。 在作业开始之前会有一个随机延迟,在anacrontab的延迟列中anacrontab

你可以看到发生了什么:

 grep monthly /var/log/syslog 

你也应该能够通过做这样的事情来使anacron运行任何一个循环:

 echo "20160101" | cat > /var/spool/anacron/cron.monthly /usr/sbin/anacron cron.monthly 

这将一个非常旧的dateinput到假脱机文件中。 这告诉anacron,每个月的工作是一个多月前的最后一次,而且会安排它现在或不久之后运行。