Если команда может зависнуть навсегда — timeout убивает её по таймауту:
timeout 5s curl https://example.com
По умолчанию посылается SIGTERM, но не все процессы его слушают. --kill-after добивает SIGKILL, если процесс не завершился сам:
timeout --kill-after=3s 10s ./stuck-script.sh
Код возврата 124 — сигнал о том, что сработал именно таймаут, а не ошибка самой команды:
timeout 5s long-task; echo $? # 124 = превышен лимит
В cron-задачах timeout — стандартная страховка от зависшего скрипта, который иначе будет копиться в процессах до следующего перезапуска:
* * * * * timeout 50s /opt/scripts/sync.sh
#linux #bash #cron #sysadmin
