Иногда команда зависает навсегда: сетевой запрос, бэкап, скрипт.
timeout - это простой способ не дать ей убить автоматизацию.▪️ Базовое использование
timeout 5s command
Если команда не завершилась за 5 секунд, то она будет остановлена.
Поддерживаемые единицы: 5s 2m 1h
▪️ В скриптах и cron. Пример с curl:
timeout 10s curl https://bashtex.com
В cron это особенно важно т.к зависшая задача может копиться часами.
▪️ Проверка результата
timeout 5s long_task
case $? in
0) echo "OK" ;;
124) echo "Timeout" ;;
*) echo "Ошибка" ;;
esac
Код 124 означает, что команда была прервана по таймауту.
▪️ Жесткое завершение
По умолчанию timeout шлёт SIGTERM.
Если процесс игнорирует его:
timeout -k 2s 10s command
10s - мягкое завершение
+2s - принудительный SIGKILL
BashTex 📱 #bash #utils