如何检测 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

相关内容