В операционной системе Linux некоторые процессы выполняются непрерывно, и для их завершения через заданное время используется команда timeout
. Этот инструмент командной строки запускает указанную команду и завершает ее, если она выполняется дольше заданного периода времени. Другая похожая команда — это timelimit
. Данная утилита выполняет заданную команду и завершает порожденный ею процесс через указанное время с определенным сигналом. Если процесс завершается до истечения времени, команда timelimit
также тихо завершит его.
Из этой статьи Вы узнаете о синтаксисе и параметрах этих двух команд. Также мы покажем Вам несколько примеров использования утилит для ограничения времени выполнения процессов на практике.
Содержание:
- Использование команды timeout для прерывания работы команд в Linux
- Ограничение времени работы команды с помощью timelimit
Использование команды timeout для прерывания работы команд в Linux
Как было сказано ранее, команда timeout
завершит введенную с ней команду, если она продолжает выполняться дольше заданного промежутка времени. Чтобы узнать ее синтаксис и параметры, которые Вы можете использовать — введите в командную строку следующее:
Рассмотрим использование данной команды на примере ping-запросов. Команда ping
используется для проверки целостности и качества соединений в сетях на основе TCP / IP. Если не установить ограничения по времени, этот процесс будет выполняться бесконечно долго.
Для примера попробуем проверить соединение с IP-адресом 192.168.59.131
и установим для команды тайм-аут через 5 секунд:
Также проверим соединение с сайтом нашего блога и прервем выполнение команды через 5 секунд:
По умолчанию команда timeout
устанавливает время в секундах. Если Вам нужно прекращать другие команды через более длительные промежутки времени — тогда используйте следующие аргументы:
m
— минуты;h
— часы;d
— дни.
Читайте также: Автоматический запуск команд через время после включения устройства
Иногда команды могут игнорировать SIGTERM
— сигнал по умолчанию от команды timeout
. В таких случаях Вы можете использовать опцию --kill-after
или сокращенно -k
. При использовании этой опции после достижения заданного срока утилита посылает заданной программе сигнал SIGKILL
, который не может быть пойман или проигнорирован.
Например, следующая команда задаст время работы ping
в 15 секунд. И если по истечении этого промежутка времени работа команды не не завершился — процесс будет принудительно остановлен еще через 5 секунд:
Ограничение времени работы команды с помощью timelimit
Команда timelimit
имеет точно такой же функционал, что и команда timeout
. Однако она сперва передает предупреждающий сигнал, а затем по истечении времени ожидания уже отправляет сигнал уничтожения процесса.
По умолчанию инструмент имеет 4 основные опции с заранее заданными значениями:
warntime
(-t
): 3600 секунд — максимальное время выполнения процесса в секундах до отправки сигналаwarnsig
;warnsig
(-s
): 15 секунд — сигнал, который будет отправлен процессуwarntime
через несколько секунд после его запуска;killtime
(-T
): 120 секунд — максимальное время выполнения процесса перед отправкойkillsig
после того, как
warnsig
был отправлен;killsig
(-S
): 9 — сигнал, который будет отправлен процессуkilltime
через несколько секунд после истечения времениwarntime
.
Используя эти опции, Вы можете изменять их значения.
Команда timelimit
изначально не предустановлена в большинстве дистрибутивов GNU / Linux. Поэтому ее нужно установить самостоятельно с помощью пакетного менеджера Вашей операционной системы. Например, в дистрибутивах на основе Debian и Ubuntu для этого используется команда apt install
:
Чтобы узнать синтаксис утилиты — выполните следующую команду:
Для более подробного ознакомления с утилитой советуем почитать ее справочную страницу man
:
Рассмотрим пример использования команды. Для начала воспользуемся параметром -t
и зададим ему значение в 5 секунд:
Как Вы могли заметить, в результате команда посылает сигнал warnsig
, и процесс прекращается.
Выводы
Пользователи Linux имеют в своем распоряжении сразу два простых и удобных инструмента для ограничения времени выполнения команд — timelimit
и timeout
. При этом освоить их использование довольно просто, особенно. Уверены, у Вас все получится!
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.