SSH를 통해 원격 디렉토리를 내 컴퓨터에 백업하기 위해 rdiff-backup을 호출하는 간단한 쉘 스크립트를 실행하는 작업 plist를 실행했습니다. 작업은 매시간 실행되며 제대로 작동합니다.
다른 날을 제외하고는 정전 *이 발생하여 rdiff-backup 작업이 중단되었습니다. 다음에 스크립트를 실행할 때 rdiff-backup이 실패하고 plist에 지정된 경로에 실패했음을 기록했습니다. 비정상 종료 코드를 확인하고 스크립트 실행을 중지했습니다.
그리고 6 일 동안은 전혀 몰랐습니다.
분명히 스크립트가 끝날 때마다 종료 코드에 대한 알림을 원하지 않습니다 . 비정상 종료에 대해서만 알림을 받으려면 어떻게해야합니까?
(*) UPS 배터리가 호출 될 때 자체 테스트를 통과했지만 실제로 3 초 이상 최소 부하로 전원을 공급할 수 없었습니다.
답변
cron
작업 과 같은 전통적인 접근 방식 은 표준 오류를 mail
빈 메일을 보내지 않을 정도로 똑똑한 프로그램에 파이프하는 것 입니다. 당신이 발견 한 것처럼 launchd와의 차이점은 표준 오류를 리디렉션하는 메커니즘이 오류 StandardErrorPath
를 기록한다는 것입니다 | mail …
.
내 일반적인 해결책은 래퍼 스크립트가 검사하고 StandardErrorPath
문제가 있는지 알려주는 것입니다. 이는 동일한 시작된 작업의 일부일 수 있으므로 다음 예약 된 실행 전에 검사가 수행되거나 오류 로그 만 관리하는 별도의 작업이있을 수 있습니다 ( QueueDirectories
키를 사용하는 경우도 있음 ).
예를 들어 명명 된 파이프를 작업으로 사용할 수도 StandardErrorPath
있지만 실제로 시도한 적이 없습니다.