img

Использование timeout в Linux с примерами

Вот вы пользователь Linux машины. И вот вам захотелось запустить какую-нибудь команду только на определенное время, и вы задаете вопрос - как это сделать? А вот как - использовать команду timeout.

icon strelka icons icons

узнай больше на курсе

Онлайн-курс по Linux
Курс по Linux от Мерион Нетворкс - стань Linux администратором, прокачай свой скиллсет умением работать с операционными системами линукс и сделай большой шаг к DevOps
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
Полный курс по сетевым технологиям
Полный курс по сетевым технологиям от Мерион Нетворкс - учим с нуля сетевых инженеров и DevOPS специалистов
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
DevOps-инженер с нуля
Стань DevOps-инженером с нуля и научись использовать инструменты и методы DevOps
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту

Как взять timeout - об использовании команды

Базовый синтаксис

Как и следовало ожидать, синтакс у команды экстремально прост: сама команда timeout - опции - длительность выполнения (можно даже с единицами измерения) - целевая команда

Единицы измерения для указания длительности:

  • s - секунды (­стоит по умолчанию)
  • m - минуты
  • h - часы
  • d - дни

Если вы не укажете никакого параметра по длительности, команда не будет активирована.

Примеры команд:

  • timeout 5 ping 1.1.1.1 - пингуем 1.1.1.1 5 секунд
  • timeout 5m ping 1.1.1.1 - пингуем 1.1.1 5 минут
  • timeout 5.5h ping 1.1.1.1 - 5,5 часов пингуем 1.1.1

Если у вас есть необходимость, можно запустить команду с добавкой sudo (если для целевой команды требуются права суперпользователя):

sudo timeout 100 tcpdump -n -w dump.pcap


Сообщение с космосом или отправка определенного сигнала исполняемому процессу

Если вы не указали какой-то особый сигнал, по умолчанию передается SIGTERM (сигнал о том, что надо бы мягко терминировать процесс). Однако, если вы укажете ключ -s после команды timeout, вы можете указать любой другой допустимый сигнал. К примеру: sudo timeout -s SIGKILL ping 1.1.1.1 или sudo timeout -s 9 ping 1.1.1.1

Обе команды выше идентичны, и если вы хотите увидеть весь список сигналов, просто введите kill -l

Использование timeout в Linux с примерами

Как убить процесс, если он завис

Как вы уже поняли, SIGTERM - это сигнал, который отправляется после истечения таймаута, но он легко может быть проигнорирован процессом, и тогда процесс не остановится. Для уверенности в смерти процесса, нужно использовать ключ -k и некое временное значение. Тогда после окончания таймаута будет отправляться сигнал SIGKILL, который процесс не сможет проигнорировать при всем желании. В примере ниже команда выполняется одну минуту, и, если в течение 10 секунд после окончания таймаута она не "умирает", отправляется сигнал SIGKILL и "добивает" процесс:

sudo timeout -k 10 1m ping 1.1.1.1


Сохраняем статус

Команда timeout всегда возвращает значение 124 после истечения указанного времени или возвращает статус "exit" управляемой команды (той, что вы вводите после команды timeout). Таким образом, вы можете использовать ключ --preserve-status:

timeout --preserve-status 10 ping 1.1.1.1


Запуск команды явно, а не за кулисами

По умолчанию, timout работает в бэкграунде, и если вы хотите обратного (вдруг после запуска управляемой команды потребуется какой-нибудь пользовательский ввод), нужно использовать ключ -foreground:

timeout --foreground 10m ./bestscripteva.sh


Заключение

В 99% процентов случаев команда timeout требует всего двух аргументов и ни одного факта: времени исполнения и самой исполняемой команды. Однако, вы теперь знаете и другие фишки использования этой замечательной команды.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
icon strelka icons icons

узнай больше на курсе

Онлайн-курс по Linux
Курс по Linux от Мерион Нетворкс - стань Linux администратором, прокачай свой скиллсет умением работать с операционными системами линукс и сделай большой шаг к DevOps
Подробнее о курсе
Полный курс по сетевым технологиям
Полный курс по сетевым технологиям от Мерион Нетворкс - учим с нуля сетевых инженеров и DevOPS специалистов
Подробнее о курсе
DevOps-инженер с нуля
Стань DevOps-инженером с нуля и научись использовать инструменты и методы DevOps
Подробнее о курсе
Python программист с нуля
Стань разработчиком на одном из самых популярных языков программирования - Python
Подробнее о курсе
Онлайн-курс по кибербезопасности
Полный курс по кибербезопасности от Мерион Нетворкс - учим с нуля специалистов по информационной безопасности. Пора стать безопасником!
Подробнее о курсе
Онлайн-курс по сетевой безопасности
Изучи основы сетевой безопасности и прокачай скилл системного администратора и сетевого инженера
Подробнее о курсе
Еще по теме:
img
Рассказываем, как появился nginx, его отличия от apache, для чего нужен nginx и какие у него преимущества
img
В этом руководстве вы узнаете, как установить и настроить Fail2ban на своем сервере.
img
В этой статье обсудим гипервизоры — важные компоненты процесса виртуализации серверов, как они работают и какие бывают типы.
img
В этой статье мы рассмотрим, как работают различные системные вызовы, разберемся в их функциях, а также постараемся сделать работу вашей системы более безопасной и предсказуемой.
img
Статья объясняет, что такое SWAP-память, как она работает, ее преимущества и недостатки, а также как управлять объемом SWAP-пространства на разных ОС.
Весенние скидки
30%
50%
60%
До конца акции: 30 дней 24 : 59 : 59