Как заставить timeout(1) вести себя в cron так же, как в интерактивной оболочке

Запуск этой команды в интерактивном bash:

      $ timeout 1 sleep 2; echo $?
124

возвращает 124 через 1 секунду, как и ожидалось и как описано в timeout(1).

Однако, если я запускаю то же самое, что и задание cron, или если я передаю это как командную строку в bash, это не произойдет:

      $ bash -c "timeout 1 sleep 2; echo $?"
0

Добавлениевызов bash не помогает, равно как и использованиепараметр для timeout(1). Я также пробовал то же самое с ksh и zsh, но всегда получал один и тот же результат, так что я думаю, это должно быть связано с тем, как работает timeout(1).

Я немного поискал в сети и обнаружил, что это может быть связано с тем, как передача сигналов проходит через группы процессов, но я не смог найти решения, как заставить тайм-аут работать должным образом в неинтерактивном случае.

Любые намеки на то, как я могу этого добиться? В конечном итоге я хочу запустить в cron команду, которая, скорее всего, заблокируется навсегда, и я хочу надежно обнаружить этот случай.

0 ответов

Другие вопросы по тегам