web-dev-qa-db-ja.com

STDOUTまたはSTDERRに何もないときにcronが電子メールを送信するのを停止する方法は?

Perl 5.18.2を使用するUbuntu 14.04lts。

これは、Googleが私を助けてくれなかった特別なケースです。すべてのcronジョブで電子メールをオフにしたくありません。crontabには約15個のジョブがあります。エラーがある場合は、cronから送信されるメールを確認する必要があります。

この1つの仕事は、解決策が必要な特別な場合です。 5分ごとに電子メールをチェックするように設定されたPerlスクリプトを呼び出すcrontabにbashスクリプトがあります。 (完全なMTAをセットアップすることはできません。)電子メールがない場合、スクリプトはSTDOUTまたはSTDERRに何も出力しませんが、cronは件名にbashスクリプトの完全パスを含む空の電子メールを送信します。

  1. エラーがあった場合も含めて、Perlスクリプトが電子メールを見つけて処理した場合、cronとPerlスクリプトに電子メールを送信してほしい。
  2. 電子メールが見つからなかったためにPerlスクリプトからの出力がない場合、cronに空白の電子メールを送信させたくありません。スクリプトは5分ごとに実行されます。

誰にもアイデアはありますか?

編集:確認済み。それは私の迷惑な改行でした。問題が解決しました。出力がない場合、Cronは電子メールを送信しません。ありがとうございました!あなたのコメントが役に立ちました。

4
Bulrush

それは、5分ごとに空の電子メールを引き起こす迷走改行でした。

Cronは、cronジョブ/プログラムの実行に出力がある場合にのみ電子メールを送信します。私の出力は改行であり、もちろんアルパインでは見えませんでしたが、そこにありました。プログラムが印刷している改行を見つけて削除しました。

ここで、パラメーターチェックを通過しない限り、何も出力しないようにcronプログラムを設計します。

2
Bulrush