如何检测cron中的更长的命令链是否失败?

我想在python中创build一个crontab包装,logging一个crontab条目是否失败。 它应该可以这样使用:

0 * * * * cronwrapper -c "some_command | some_other_command & third_command 2>/dev/null && fourth_command" 

logging部分很容易,已经完成。 但是,我不知道如何可靠地检测pipe道中的任何一个命令或逻辑分支和分支是否失败。

不,在上面的例子中没有办法可靠地检测到所有命令的退出代码。

为什么不能在一个小的bash脚本中添加所有4个命令,并使用:

 0 * * * * cronwrapper -c "script.sh" 

这样,你将能够更好地处理脚本中的任何错误

您可能pipefailsome_command | some_other_command启用bash pipefail some_command | some_other_command

查看下面相同pipe道的退出代码的区别

 $ 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