Я бег команды таймаута GNU Coreutils,Запуск программы с тайм-аутом
gtimeout 600 питона myprogram.py
В соответствии с manual,
продолжительностью является число с плавающей запятой, за которым следует дополнительный блок:
's' для secon DS «т» (по умолчанию) в течение минут ч 'в течение нескольких часов «D» для дней
Таким образом,' python myprogram.py
части должна завершить в течение 600 секунд (10 минут). К моему удивлению, команда на самом деле истекает через 1 час. Зачем?
Может быть, ваш питон скрипт не отвечает правильно SIGTERM? Попробуйте добавить '-s 9', например. 'gtimeout -s 9 600 python myprogram.py', вместо этого отправить SIGKILL. – CherryDT
Не могли бы вы немного разобраться? Я, вероятно, приму ваш ответ. – zell
Я не уверен, что это правильное решение в вашем случае, вам придется попробовать. Прямо сейчас это была догадка, и я думал, что этого недостаточно для реального ответа. Но дело в том, что есть два способа прекратить процесс: сигнал «SIGTERM», который в основном просит процесс прекратить (может отказаться от этого), и «SIGKILL», который не может быть заблокирован и заставит процесс для завершения ОС. 'gtimeout' обычно отправляет SIGTERM (например,' kill' делает). Вы можете использовать '-s', чтобы указать другой сигнал, например' 9' (то же, что и 'KILL', имя сигнала), как вы делали бы с' kill -9'. – CherryDT