Иногда нужно запустить команду, но ограничить её время выполнения. Например, если программа зависла или работает слишком долго. Для этого используется команда
timeout.▪️ Простой пример. Запустим команду sleep на 5 секунд, но прервём её через 2 секунды:
timeout 2s sleep 5
Через 2 секунды процесс будет завершён.
▪️ Прерывание долгих команд. Если вы хотите ограничить время выполнения скрипта:
timeout 10s ./долгий_скрипт.sh
Если скрипт не завершится за 10 секунд, timeout его принудительно остановит.
▪️ Игнорирование SIGTERM. Некоторые команды игнорируют сигнал SIGTERM. В таком случае можно использовать -k для отправки SIGKILL:
timeout -k 5s 30s ./непослушный_процесс
Сначала timeout подождёт 30 секунд, затем отправит SIGTERM.
Если процесс не завершится через 5 секунд, отправится SIGKILL.
▪️ Использование с ping. Ограничим ping 5 секундами:
timeout 5s ping 8.8.8.8
Через 5 секунд ping остановится автоматически.
▪️ Вывод кода завершения
Если команда успела завершиться - timeout передаст её код возврата.
Если команда была принудительно остановлена - код возврата будет 124.
Проверим:
timeout 2s sleep 5
echo $? # Выведет 124
BashTex 📱 #linux #utils