На це запитання вже є відповідь:
- Команда Bash Run на певний час? 3 відповіді
Чи можна запустити скрипт з bash (наприклад, python) з терміном завершення, що означає, що якщо цей сценарій виконується довше, ніж X секунд, завершіть його?
На це запитання вже є відповідь:
Чи можна запустити скрипт з bash (наприклад, python) з терміном завершення, що означає, що якщо цей сценарій виконується довше, ніж X секунд, завершіть його?
Відповіді:
Так, можна запустити скрипт bash з тайм-аутом його завершення. Ви можете зробити це за допомогою:
Він запускає команду з обмеженням часу. Загальний синтаксис включає:
timeout signal duration command/script arguments
де:
s за секунди, m за хвилини, h годинами , d на добу. За замовчуванням - секунди, коли ви вказуєте лише число. Як приклад можна сказати, що ви хочете завершити роботу сценарію через 2 хвилини, а потім:
timeout 2m /path/to/script arg1 arg2
NOTE : Сигнал затримки за промовчанням SIGTERM для яких деякі процеси не припиняються. У такому випадку нам потрібно використовувати SIGKILL сигналу, щоб убити процес.
timeout -s KILL 2m /path/to/script arg1 arg2
АБО
timeout -k 30 2m /path/to/slow-command arg1 arg2
У цьому випадку час очікування спочатку посилає SIGTERM сигнал після початкового тайм-ауту в 2 хвилини. Потім чекає черговий тайм-аут 30 секунд і надсилає a SIGKILL процес, якщо він все ще працює.
timeout команда: Ну, Є багато альтернатив або обхідних шляхів, якщо з якоїсь причини ви не можете використовувати timeout. Це:
Стан sleep потім kill :
/path/to/script arg1 arg2 & sleep 2m ; kill $!
Сигнали Perl (це можна використовувати в послідовному сценарії.):
perl -e "alarm 120; exec @ARGV" "/path/to/script arg1 arg2"
Використання очікувати команда:
time_out=120
command="/path/to/script arg1 arg2"
expect -c " set echo \"-noecho\";
set timeout $time_out;
spawn -noecho $command;
expect timeout { exit 1 } eof { exit 0 } "
Ви можете додавати більше деталей.