¿Cómo detectar si falla una cadena de comandos más larga en cron?

¿Cómo detectar si falla una cadena de comandos más larga en cron?

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 pipefailparasome_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

información relacionada