Назад | Перейти на главную страницу

Как определить, что более длинная цепочка команд в cron дает сбой?

Я хочу создать оболочку crontab в python, которая регистрирует сбой записи crontab. Его можно использовать так:

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

Часть регистрации довольно проста и уже сделана. Однако я не знаю, как я могу надежно определить, не срабатывает ли какая-либо одна команда в конвейере или логическое И или разветвление.

Нет, надежно определить код выхода всех команд в приведенном выше примере невозможно.

Почему вы не можете добавить все 4 команды в небольшой сценарий bash и использовать:

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

Таким образом вы сможете лучше обрабатывать любые ошибки внутри вашего скрипта.

Вы также можете включить bash pipefail для some_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