特定のタスクのcronに関するすべての電子メール通知を抑制する方法は?

特定のタスクのcronに関するすべての電子メール通知を抑制する方法は?

次のシェルスクリプトを準備しています。

#!/bin/bash
(echo open mailserver.nowhere.local 25; sleep 1; echo EHLO; echo quit)\
  | telnet | grep "?Invalid command"

    if [ $? -eq 1 ]; then
       if [ -r /tmp/sendmail_stopped ]; then
          rm /tmp/sendmail_stopped
          /etc/init.d/sendmail start
          mail -s "sendmail has started back up." [email protected] < /dev/null
       else
           echo "sendmail OK"
       fi
    else
        if [ ! -r /tmp/sendmail_stopped ]; then
            touch /tmp/sendmail_stopped
            /etc/init.d/sendmail stop
        else
            echo "sendmail still not OK"
        fi
    fi

このように

*/5 * * * * root /home/amr/bin/sendmail_alive.sh 2>&1 > /tmp/sendmail_alive.log

しかし、依然として司令部から電子メールを受け取りますtelnet

私はコマンドの出力を含む電子メールを受信しないようにいくつかの方法を試しましたtelnet

Connection closed by foreign host.

何が間違っているのかわかりません。どんな提案でも大変感謝します。

ベストアンサー1

一般的な間違い、間違ったリダイレクト順序、次を試してください。

 … sendmail_alive.sh >/tmp/sendmail_alive.log 2>&1

仕組みは次のとおりです。

  1. ファイル記述子標準出力/tmp/sendmail_alive.log
  2. /tmp/sendmail_alive.logファイル記述子 stderr を stdout() 値として

コマンドに従って、最初に stderr を元の stdout として指定し、次に「外部ホストによって接続がクローズされました」という stderr メッセージが表示されます。結果があります。

おすすめ記事