Como detectar se uma cadeia mais longa de comandos no cron falha?

Como detectar se uma cadeia mais longa de comandos no cron falha?

Quero criar um wrapper crontab em python que registre se uma entrada do crontab falhar. Deve ser utilizável assim:

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

A parte de registro é bastante fácil e já está concluída. No entanto, não sei como posso detectar com segurança se algum comando no pipe ou no lógico e ou na bifurcação falha.

Responder1

Não, não há como detectar com segurança o código de saída de todos os comandos no exemplo acima.

Por que você não pode adicionar todos os 4 comandos dentro de um pequeno script bash e usar:

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

Dessa forma, você poderá lidar melhor com quaisquer erros dentro do seu script

Você também pode querer habilitar o bash pipefailparasome_command | some_other_command

Veja a diferença nos códigos de saída abaixo para o mesmo pipeline

$ 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

informação relacionada