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 pipefail
parasome_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