是否可以在用户的 crontab 中放置“if”语句,或者是否有其他合理的方法来组织大量条件 cron 作业?从最终用户的角度来看,如果他们可以使用普通的 crontab 并尽可能将他们的条目放在两行之间,这将是最简单的。
理想情况下是这样的:
if [ something ]; then
* * * * * /usr/bin/php /path/to/file.php
0 0 * * * /usr/bin/php /path/to/file2.php
*/5 * * * * /root/script.sh
fi
答案1
完全做到这一点是不可能的。
但是,您可以做的是制作一个类似的脚本/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
答案2
我不建议将其放入 crontab 文件中。相反,创建一个脚本来设置条件,然后将其放入 crontab 文件中。您将获得更简洁、更有条理的设置。