Как запустить процесс с таймаутом в Bash?
Возможный дубликат:
Bash script, который убивает дочерний процесс после заданного таймаута
Есть ли способ написать оболочку script, которая выполнила бы определенную команду в течение 15 секунд, а затем убьет команду?
Я пробовал спать, ждать и пинговать, но, возможно, я использую их неправильно.
Ответы
Ответ 1
Используйте команду timeout
:
timeout 15s command
Примечание. В некоторых системах вам необходимо установить coreutils
, а другие - отсутствовать или иметь разные аргументы командной строки. См. Альтернативное решение, отправленное @ArjunShankar. На основании этого вы можете инкапсулировать этот код котельной и создать свой собственный переносимый timeout
script или маленький C-приложение, которое делает то же самое.
Ответ 2
Вы можете выполнить фоновый процесс, и его PID переходит в $!
. Затем спать и убивать:
some_command some_arg1 some_arg2 &
TASK_PID=$!
sleep 15
kill $TASK_PID
В этот URL Я нахожу, что упоминалось более нескольких решений, чтобы это произошло.