В операционной системе 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.































