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 at
RedHat은 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이고, 그렇지 않으면 아무것도 없습니다.
크론 작업을 수행할 때도 동일한 작업을 수행하세요.