我想用 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