
いくつかのcronジョブがあり、そのうちのいくつかは私に電子メールを送信するのをやめません。
作業例は次のとおりです。
*/2 * * * * PHP アプリケーション/コンソール mautic:email:fetch > /dev/null 2>&1
(問題のすべての作業は手動操作です。)
電子メールを避けるために私が試したいくつかのヒントは次のとおりです。
> /dev/null
>/dev/null
>/dev/null 2>&1
>/dev/null 2>&1 || true
|| true
実行されるたびにメールを送信し続けます。
電子メールの例:
/bin/sh: 1: 生成できません。 1: 権限が拒否されました。
(不思議なバグということはわかりますが、これは単なる例です。バグを修正して沈黙させる必要があることを知っていますが、なぜ一般的な方法で沈黙させることができないのかを知りたいです。)
問題は、ジョブの結果をリダイレクトするか、||を使用してジョブの結果を変更しても、cronが電子メールを送信し続けるのはなぜですか? (リンクされた質問で)私が見つけることができる唯一の解決策は、以下を追加することでした。
メールアドレス=""
「正常」(または非スパム)cron操作の後(そしてこれらの他の作業の前)。
答え1
この/bin/sh: 1: cannot create 1: Permission denied
エラーは、リダイレクトのミスによって発生する可能性があります。おそらく2>&1
あなたは2>1
または2>1&
。 (通常、ホームディレクトリに名前付きファイルを作成しようとすると1
成功しますが、名前付きファイルが1
すでに存在し、書き込めない場合はエラーが発生します。)
エラーが削除されない理由は、出力がリダイレクトされたコマンドからメッセージを受け取らないためです。このメッセージは、コマンドのリダイレクトを設定しようとするとシェルによって報告されます。シェル自体の出力はリダイレクトされていないため、メッセージが収集され、cron
電子メールで送信されます。