
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>&1
stderrに書き込まれたすべてをstdoutにリダイレクトします
>/dev/null
stdoutを/dev/nullにリダイレクトします
cron は、他の場所にリダイレクトされない限り、stdout または stderr に送信されたものを常にメールで送信します。理想的には、PHP スクリプトを --quiet フラグを受け入れるように書き直して、stdout に大量の無駄な情報を書き出さないようにし、cron ジョブで使用できるようにします。
怠け者の選択肢は、ラッパースクリプトcron ジョブの周囲に、コマンドがゼロ以外で終了しない限り電子メールが送信されないようにするコードを追加します。
答え3
正しい設定は
>/dev/null
これにより、標準出力は無視され、エラーがある場合にのみ電子メールが送信されます。
現在の設定では標準出力が処理されないため、実行されるたびに電子メールが届きます。