是否可以在使用者的 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 檔案中。您將擁有更乾淨且井井有條的設定。