我希望我正确地问这个问题。 我试图通过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在运行之前打印脚本名称
如果您只想检查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,每个月的工作是一个多月前的最后一次,而且会安排它现在或不久之后运行。