Quiero crear un contenedor crontab en Python que registre si falla una entrada de crontab. Debería poder usarse así:
0 * * * * cronwrapper -c "some_command | some_other_command & third_command 2>/dev/null && fourth_command"
La parte de registro es bastante fácil y ya está hecha. Sin embargo, no sé cómo puedo detectar de manera confiable si falla algún comando en la tubería o en la bifurcación lógica y/o.
Respuesta1
No, no hay forma de detectar de manera confiable el código de salida de todos los comandos en el ejemplo anterior.
¿Por qué no puedes agregar los 4 comandos dentro de un pequeño script bash y usar:
0 * * * * cronwrapper -c "script.sh"
De esta manera podrás manejar mejor cualquier error dentro de tu script.
Es posible que también quieras habilitar bash pipefail
parasome_command | some_other_command
Vea la diferencia en los códigos de salida a continuación para el mismo canal
$ 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