我想在 python 中建立一個 crontab 包裝器,記錄 crontab 條目是否失敗。它應該像這樣使用:
0 * * * * cronwrapper -c "some_command | some_other_command & third_command 2>/dev/null && fourth_command"
日誌記錄部分非常簡單並且已經完成。但是,我不知道如何可靠地檢測管道或邏輯與或分叉中的任何一個命令是否失敗。
答案1
不,沒有辦法可靠地偵測上例中所有指令的退出代碼。
為什麼不能將所有 4 個命令添加到一個小型 bash 腳本中並使用:
0 * * * * cronwrapper -c "script.sh"
這樣您就可以更好地處理腳本中的任何錯誤
您可能還想啟用pipefail
bashsome_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