如何偵測 cron 中較長的命令鍊是否失敗?

如何偵測 cron 中較長的命令鍊是否失敗?

我想在 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"

這樣您就可以更好地處理腳本中的任何錯誤

您可能還想啟用pipefailbashsome_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

相關內容