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

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

我希望我问的正确。我正在尝试运行服务器上设置的所有作业,通过 nano/etc/crontab我看到以下列表:

# m h 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 来启动所有这些作业,或者强制它们运行?

我试图确认它们确实在运行。

答案1

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

grep -i cron /var/log/syslog

答案2

只需执行 cron 所做的操作。

  • run-parts -v /etc/cron.daily
  • run-parts -v /etc/cron.weekly
  • ETC

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

答案3

这个问题实际上是关于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

您可以使用以下方法查看正在发生的事情:

grep monthly /var/log/syslog

您还可以通过执行以下操作来使 anacron 运行任何循环:

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

这会在假脱机文件中输入一个非常旧的日期。这告诉 anacron 该月度作业上次运行已超过一个月,并且它将安排该作业现在或不久后运行。

答案4

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

service cron status

cron使用检查日志消息journalctl看这里

journalctl -u cron _TRANSPORT=stdout

相关内容