문제가 발생하지 않는 한 크론 이메일을 비활성화하시겠습니까?

문제가 발생하지 않는 한 크론 이메일을 비활성화하시겠습니까?

오류가 있는 경우 cron으로부터 이메일만 받을 수 있나요?

대부분의 경우 작업은 잘 실행될 것입니다. 출력에는 별로 관심이 없습니다.

드물게 실패하는 경우에만 알고 싶거나 알고 싶습니다.

나는 가지고있다프로그램 메일작동합니다. 그러나 제가 설명한 내용이 외부에서 cron을 관리하는 데 "올바른" 것인지 확실하지 않습니다.

답변1

명령은 chronic다음에서 비롯됩니다.더 많은 유틸리티실패하지 않는 한 명령을 자동으로 실행합니다.

매뉴얼에서 인용하면 다음과 같습니다.

Chronic은 명령을 실행하고 명령이 실패하는 경우(0이 아닌 종료 또는 충돌)에만 표준 출력 및 표준 오류를 표시하도록 준비합니다. 명령이 성공하면 관련 없는 출력이 숨겨집니다.

Chronic의 일반적인 용도는 cron 작업을 실행하는 것입니다. 명령을 조용하게 유지하고 성공 시 예상치 못한 출력을 메일로 보내고 실패 시 충분히 자세한 출력을 처리하는 대신, 언제든지 명령을 장황하게 실행하고 만성을 사용하여 성공 시 출력을 숨길 수 있습니다.

답변2

출력에 관심이 없으므로 작업의 STDOUT을 로 리디렉션하고 STDERR이 메일로 전송되도록 할 수 있습니다 ( 환경 변수 /dev/null사용 ).MAILTO

예를 들면 다음과 같습니다.

...
...
[email protected]
...
...
* * * * * /my/script.sh >/dev/null

STDERR(with STDERR)로만 출력되는 경우 메일을 보내고 STDOUT은 폐기됩니다.

물론 이는 프로그램이 STDERR에 쓸 때 이미 실패했다고 가정합니다. 항상 그런 것은 아닙니다. 프로그램을 제어할 수 있는 경우 프로그램이 이를 수행하도록 할 수 있습니다. 복잡한 상황의 경우 명령을 실행하고 그에 따라 메일을 보내려면 일종의 래퍼를 작성해야 합니다. 그리고 포장지를 cron작업물로 활용해보세요.

답변3

오류가 있는 경우 cron으로부터 이메일만 받을 수 있나요?

다음과 같은 방법으로 cron 호출을 래핑할 수 있습니다.만성병 환자, 호출된 프로세스에 0이 아닌 반환 코드가 있거나 비추적 오류 출력이 없는 한 cron 출력을 사용하는 쉘 스크립트입니다.

cronic을 사용하려면 적절한 위치(예: )에 스크립트를 다운로드하십시오 . 설정이 올바른 경우 /usr/local/bincrontab 항목 앞에 스크립트 경로(예: /usr/local/bin/cronic)가 추가되거나 간단히 추가되어야 합니다.cronicPATH

"오류"는 귀하의 질문에서 잘못 정의된 용어이므로 신중하게 정의해야 합니다. cronic을 유용하게 사용하려면 오류 조건을 정의하는 방식 중 하나로 cronic으로 래핑된 작업이 오류를 보고하는지 확인해야 합니다. 암시적 보고 방법(예: 텍스트 문자열 작성 STDOUT)은 cronic 또는 기타 cron 보고 메커니즘과 호환되도록 하기 위해 추가 고려가 필요합니다.

cronic 사이트 링크에 ​​표시된 대로 다른 래퍼도 사용할 수 있습니다.

답변4

처음부터 끝까지 이런 생각을 못했을 수도 있지만

* * * * * yourthing.sh >/tmp/yourthing.log && rm -f /tmp/yourthing.log; cat /tmp/yourthing.log 2>/dev/null

일반적인 경우 모든 것을 임시 파일( mktemp고유한 파일 이름을 얻는 데 사용할 수 있음)로 리디렉션하고, 성공하면 파일을 삭제한 다음 cat내용이 여전히 남아 있으면 내용을 다시 삭제합니다(예: yourthing.sh가 오류 조건), cron 메일러에서 수신했습니다.

메모리가 정상이라면 출력이 없으면 cron은 아무 것도 보내지 않으므로 로그 파일이 비어 있거나 존재하지 않으면 아무 일도 일어나지 않습니다. (오류 메시지를 다른 곳으로 리디렉션합니다.)

관련 정보