PHP crontab をサイレントにする方法

PHP crontab をサイレントにする方法

Cpanel で crontab を 1 分ごとに実行するように設定しました。うまく機能していますが、1 分ごとに電子メールを送信したくありません。毎日実行する 2 番目の cron タブがあります。このタブの応答が欲しいです。crontab に何も実行しないように指示したり、エラーが発生したときに電子メールのみを送信するように指示する方法はありますか?

私は持っている:

    *    *  *   *   * php /home/public_html/folder/file.php 2>&1

最後の部分は2>&1静かになると思ったので追加しました。

Cpanel ドキュメントより:

cron がコマンドを実行するたびにメールを送信するように設定できます。個々の cron ジョブに対してメールを送信したくない場合は、次のようにコマンドの出力を /dev/null にリダイレクトできます: mycommand >/dev/null 2>&1

答え1

使用する-qと「静か」という意味になり、出力は生成されません。

*    *  *   *   * php -q /home/public_html/folder/file.php

また、なぜ毎分実行する必要があるのか​​自問してみてください。それは少し過剰です。

答え2

2>&1stderrに書き込まれたすべてをstdoutにリダイレクトします

>/dev/nullstdoutを/dev/nullにリダイレクトします

cron は、他の場所にリダイレクトされない限り、stdout または stderr に送信されたものを常にメールで送信します。理想的には、PHP スクリプトを --quiet フラグを受け入れるように書き直して、stdout に大量の無駄な情報を書き出さないようにし、cron ジョブで使用できるようにします。

怠け者の選択肢は、ラッパースクリプトcron ジョブの周囲に、コマンドがゼロ以外で終了しない限り電子メールが送信されないようにするコードを追加します。

答え3

正しい設定は

>/dev/null

これにより、標準出力は無視され、エラーがある場合にのみ電子メールが送信されます。

現在の設定では標準出力が処理されないため、実行されるたびに電子メールが届きます。

関連情報