crontab 항목이 실패하면 기록하는 crontab 래퍼를 Python으로 만들고 싶습니다. 다음과 같이 사용할 수 있어야 합니다.
0 * * * * cronwrapper -c "some_command | some_other_command & third_command 2>/dev/null && fourth_command"
로깅 부분은 매우 쉽고 이미 완료되었습니다. 그러나 파이프나 논리 및/또는 분기의 명령 중 하나가 실패하는지 어떻게 안정적으로 감지할 수 있는지 모르겠습니다.
답변1
아니요, 위 예에서 모든 명령의 종료 코드를 안정적으로 감지할 수 있는 방법은 없습니다.
작은 bash 스크립트 안에 4개의 명령을 모두 추가하고 다음을 사용할 수 없는 이유는 무엇입니까?
0 * * * * cronwrapper -c "script.sh"
이렇게 하면 스크립트 내의 오류를 더 잘 처리할 수 있습니다.
pipefail
다음에 대해 bash를 활성화할 수도 있습니다 .some_command | some_other_command
아래에서 동일한 파이프라인에 대한 종료 코드의 차이점을 확인하세요.
$ set -o | grep pipefail
pipefail off
$ ls bla &> /dev/null | echo aa
aa
$ echo $?
0
$ set -o pipefail
$ set -o | grep pipefail
pipefail on
$ ls bla &> /dev/null | echo aa
aa
$ echo $?
1