在crontab中有条件的块

是否有可能在用户的crontab中放置“if”语句,或者是否有另一种明智的方式来组织大量的条件cron作业? 从最终用户的angular度来看,如果可以使用正常的crontab,并且尽可能在两行之间input它们,那将是最简单的。

理想情况下是这样的:

if [ something ]; then * * * * * /usr/bin/php /path/to/file.php 0 0 * * * /usr/bin/php /path/to/file2.php */5 * * * * /root/script.sh fi 

这是不可能的。

但是你可以做的是创build一个像/usr/local/bin/check_live这样的脚本,如果服务器当前有活动,那么这个脚本/usr/local/bin/check_live以状态码0退出,如果不是,那么就是非零。

然后你可以有crontab行:

 * * * * * /usr/local/bin/check_live && /usr/bin/php /path/to/file.php 0 0 * * * /usr/local/bin/check_live && /usr/bin/php /path/to/file2.php */5 * * * * /usr/local/bin/check_live && /root/script.sh 

我不会build议把它放在crontab文件中。 相反,创build一个脚本,您将设置您的条件,然后将其放入crontab文件。 你将有一个更清洁和有组织的设置。