Как задать таймаут выполнения процесса?
Есть задача:
run script.sh >> log.file &
Как задать таймаут? Допустим, если задача выполняется более 60 секунд, то кикаем ее.
Источник: Stack Overflow на русском
Есть задача:
run script.sh >> log.file &
Как задать таймаут? Допустим, если задача выполняется более 60 секунд, то кикаем ее.
Для этого есть команда timeout
из пакета coreutils.
Например, чтобы для вашей команды задать таймаут равный 60 секундам, выполните следующую команду:
timeout 60 ВАША_КОМАНДА
Но допустим у вас нет timeout
или есть жгучее желание собрать свой велосипед(как у меня)) Тогда можно попробовать что-нибудь такое:
# зададим время ожидания - 3(сек.)
runtime=3
# Запускаем искомую команду в фоне и записываем её pid в переменную $pid
some_command & pid=$!
# Запускаем в фоне подпрограмму которая будеть ждать $runtime секунд
# затем выполнит kill $pid
(sleep $runtime; kill $pid) &
# Тест
sleep 20 & pid=$!
(sleep 3; kill $pid) &