如何告诉 crontab 从现在开始立即执行命令

如何告诉 crontab 从现在开始立即执行命令

我在“/etc/crontab”中有一个命令,它每 7 天运行一个数据库程序。现在,我看到这个命令已经被另一个用户评论了两周了。我立即取消了该行的注释,今天我看到这个命令还没有被 crontab 执行。

为什么?我认为重新启动/etc/init.d/cron restart后,crontab会重新启动并看到命令行,它说每7天执行一次命令。那这个程序什么时候启动啊!不是在服务 crond 重新启动时立即启动吗?看来不是。

我现在不能等待 7 天的程序,我希望 crontab 从今晚开始这 7 天。我怎样才能做到这一点?

脚本是:

0 0 */7 * *        root  source /opt/db_maintain/run.sh

答案1

*/7 并不意味着“从现在起每 7 天一次”。意思是“7的倍数的每一天”。因此,如果 #day modulo 7 == 0 → 该月的第 7、14、21、28 日,它就会运行命令。

Cron 的法语 wiki 页面提供了许多示例: http://fr.wikipedia.org/wiki/Cron#Examples

您可能想使用 Fcron: http://fcron.free.fr/

答案2

今天是星期三。如果您希望 cron 在每周四午夜执行命令,请在 crontab 中输入以下内容:

0 0 * * 4    root /path/to/command

答案3

您还可以安装at服务/守护程序,它根据时间特征(例如“现在 + 7 天”)来假脱机作业。首先,启动atd(通过init脚本systemdupstart)。然后将你的工作排队

at -f /path/to/command now + 7 days

从现在起 7 天后开始,或者

at 2am tomorrow

并阅读明天凌晨 2 点运行的命令。您需要先进行一两次测试,然后等待 7 天才发现它不起作用。尝试now + 1 minutes

让它每 7 天运行一次的一种方法是在批处理前面添加另一个at命令:

cat >~/bin/weekly-job.sh << AT
at -f ~/bin/weekly-job.sh now + 7 days
~/bin/database-job.sh
AT

相关内容