특정 작업에 대한 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 메시지가 표시됩니다. 결과가 있습니다.

관련 정보