Как выполнить команду с ограничением по времени (Timeout) в Linux
Linux поставляется с множеством команд, каждая команда уникальна и используется в определенных случаях. Цель Linux — помочь вам быть максимально быстрым и эффективным. Одним из свойств команды Linux является ограничение по времени. Вы можете установить ограничение по времени для любой команды, которую вы хотите. Если время истекло, команда прекращает выполнение.
В этом коротком руководстве вы изучите два метода использования ограничения времени в ваших командах.
Запустите команды Linux с помощью инструмента timeout
В Linux есть утилита командной строки, называемая timeout, которая позволяет вам выполнять команду с ограничением по времени.
Его синтаксис выглядит следующим образом.
timeout [OPTION] DURATION COMMAND [ARG]...
Чтобы использовать команду, вы указываете значение времени ожидания (в секундах) вместе с командой, которую хотите запустить. Например, чтобы тайм-аут команды ping завершился через 5 секунд, вы можете выполнить следующую команду.
# timeout 5s ping google.com
Вам не нужно указывать (s) после номера 5 . Команда ниже та же самая и будет работать.
# timeout 5 ping google.com
Другие суффиксы включают в себя:
- m представляет минуты
- h представляет часы
- d представляет дни
Иногда команды могут продолжать выполняться даже после того, как timeout отправит начальный сигнал. В таких случаях вы можете использовать —kill-after опцию.
Вот синтаксис.
-k, --kill-after=DURATION
Вы должны указать продолжительность, чтобы timeout узнал, через сколько времени должен быть отправлен сигнал уничтожения.
Например, показанная команда будет прекращена через 8 секунд.
# timeout 8s tail -f /var/log/syslog
Запуск команд Linux с помощью программы Timelimit
Программа Timelimit запускает данную команду, а затем завершает процесс через указанное время, используя данный сигнал. Сначала он передает предупреждающий сигнал, а затем по истечении времени ожидания отправляет сигнал уничтожения.
В отличие от опции timeout, Timelimit имеет больше опций, таких как killsig, warnsig, killtime и warntime.
Timelimit можно найти в репозиториях систем на основе Debian, и для их установки используйте следующую команду.
$ sudo apt install timelimit
Для систем на основе Arch вы можете установить его с помощью вспомогательных программ AUR, например, Pacaur Pacman и Packer
# Pacman -S timelimit # pacaur -S timelimit # packer -S timelimit
В других дистрибутивах Linux вы можете скачать исходный код и установить его вручную.
После установки выполните следующую команду и укажите время. В этом примере вы можете использовать 10 секунд.
$ timelimit -t10 tail -f /var/log/pacman.log
Обратите внимание, что если вы не задаете аргументы, Timelimit использует значения по умолчанию: warntime = 3600 секунд, warnsig = 15 , killtime = 120 и killsig = 9 .
Вывод
Из этого руководства вы узнали, как выполнять команды с ограничением по времени в Linux. В обзоре вы можете использовать команду Timeout или утилиту Timelimit .
Команда Timeout проста в использовании, утилита Timelimit немного сложна, но имеет больше опций. Вы можете выбрать наиболее подходящий вариант в зависимости от ваших потребностей.