我希望我问的正确。我正在尝试运行服务器上设置的所有作业,通过 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