Как заставить timeout(1) вести себя в cron так же, как в интерактивной оболочке
Запуск этой команды в интерактивном bash:
$ timeout 1 sleep 2; echo $?
124
возвращает 124 через 1 секунду, как и ожидалось и как описано в timeout(1).
Однако, если я запускаю то же самое, что и задание cron, или если я передаю это как командную строку в bash, это не произойдет:
$ bash -c "timeout 1 sleep 2; echo $?"
0
Добавление
Я немного поискал в сети и обнаружил, что это может быть связано с тем, как передача сигналов проходит через группы процессов, но я не смог найти решения, как заставить тайм-аут работать должным образом в неинтерактивном случае.
Любые намеки на то, как я могу этого добиться? В конечном итоге я хочу запустить в cron команду, которая, скорее всего, заблокируется навсегда, и я хочу надежно обнаружить этот случай.