crontab の条件ブロック

crontab の条件ブロック

ユーザーの crontab に「if」ステートメントを入れることは可能ですか、それとも多くの条件付き cron ジョブを整理する別の賢明な方法がありますか? エンド ユーザーの観点からは、通常の crontab を使用して、可能であればエントリを 2 行の間に入れるのが最も簡単です。

理想的には次のようになります:

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 で終了し、稼働中でない場合は 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 ファイルに入れます。よりクリーンで整理されたセットアップになります。

関連情報