at 작업에 대한 메일링 출력을 비활성화하는 방법은 무엇입니까?

at 작업에 대한 메일링 출력을 비활성화하는 방법은 무엇입니까?

at특정 유형의 작업에 대한 이메일 알림을 비활성화하고 싶습니다 . 예를 들어 아래 사용 사례를 테스트하는 동안(작업이 중간에 종료됨)아니요출력을 원하지만 프로덕션에서 동일한 코드를 사용하여 게시물의 출력을 원합니다.

$ at now <<<'/usr/bin/timeout 15s nc -l 20242'
job 71 at 2016-05-16 15:03
$ pidof /usr/bin/timeout
11853
$ kill 11853
$ mail
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/spool/mail/bishop": 1 message 1 new
>N  1 bishop@trencher  Mon May 16 15:03  16/920   "Output from your job       71"
& 1
Message  1:
From bishop@trencher  Mon May 16 15:03:30 2016
Date: Mon, 16 May 2016 15:03:30 -0400
From: bishop@trencher
Subject: Output from your job       71
To: bishop@trencher
Status: R

/bin/bash: line 1: 11853 Terminated              /usr/bin/timeout 15s nc -l 20242

설정할 수 있다는 것을 알고 있지만 MAILPATH=/dev/null좀 더 세밀하게 제어하는 ​​것을 선호합니다. 설정에는 뚜렷한 효과 MAIL가 없습니다 . MAILTO해당 지시문을 제거하기 위해 작업을 편집할 수 있다고 생각했지만 # mail작동하지 않는 것 같습니다.

at 15:15 <<<'date'
at -c 73 | grep -v '^# mail bishop' | at 15:15
atrm 73

여러번 검색해 봤지만, at이라는 이름의 명령어를 검색하는 것이 쉽지 않다는 점만 말씀드리겠습니다. 소스 코드도 찾을 수 없습니다. GNU coreutils에 있지 않나요?

고쳐 쓰다:사이트 ID:

$ uname -a
Linux trencher 4.4.8-20.46.amzn1.x86_64 #1 SMP Wed Apr 27 19:28:52 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ at -V
at version 3.1.10

각 작업의 출력(모든 출력)을 제출하는 사용자에게 메일로 보낼지 여부를 제어할 수 있습니까?

답변1

RedHat(및 Centos 및 친구) at과 Debian 파생 제품( rpm -qi atRedHat은 Debian URL을 나타내고 위의 설명에서는 derobert를 나타냄)은 다음 -M옵션을 지원해야 합니다.

    -M      Never send mail to the user.

이것이 누락된 경우 다른 옵션은 작업 출력을 억제하는 것입니다.

#!/bin/bash
exec >/dev/null 2>&1
... the usual job commands here ...

logger또는 출력을 실제로 검사해야 하는 경우 출력을 로그 파일이나 로그 파일로 파이프할 수 있습니다.

또 다른 옵션은 특히 개발 시스템이기 때문에 메일 전송 에이전트를 변경하고 /dev/null모든 메일을 개발 서버의 메일함 파일에 넣거나 넣는 것입니다. 하지만 이렇게 하려면 더 많은 작업이 필요합니다.

답변2

at( 패키지 chronic에서 ) 전달된 명령을 앞에 추가하면 여전히 얻을 수 있습니다.moreutils둘 다명령이 오류 상태로 종료되면 stderr 및 stdout이고, 그렇지 않으면 아무것도 없습니다.

크론 작업을 수행할 때도 동일한 작업을 수행하세요.

관련 정보