Поиск по сайту:

...Учись у меня трудам и доблести, сын мой, Быть счастливым учись у других (Вергилий).

Команда Timeout в Linux3 мин для чтения

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
27 января 2020
Команда Timeout в Linux
timeout, это утилита командной строки, которая запускает указанную команду и завершает ее, если она все еще выполняется через определенный промежуток времени. Другими словами, timeout позволяет запустить команду с ограничением по времени. Команда timeout является частью пакета основных утилит GNU, который устанавливается практически в любом дистрибутиве Linux.

Это удобно, когда вы хотите запустить команду, у которой нет встроенной опции тайм-аута.

В этой статье мы объясним, как использовать команду timeout в Linux.

 

Как использовать команду timeout

Синтаксис команды timeout следующий:

timeout [OPTIONS] DURATION COMMAND [ARG]…

где DURATION, может быть положительное целое число или число с плавающей точкой, а затем с помощью дополнительного блока суффикса:

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

 

Когда устройство не используется, по умолчанию используется значение секунд. Если длительность установлена ​​на ноль, связанный тайм-аут отключен.

Параметры команды должны быть указаны перед аргументами.

Вот несколько основных примеров, демонстрирующих использование команды timeout:

  • Завершить команду через пять секунд:
    timeout 5 ping 8.8.8.8
  • Завершите команду через пять минут:
    timeout 5m ping 8.8.8.8
  • Завершите команду через одну минуту и ​​шесть секунд:
    timeout 1.1m ping 8.8.8.8

Если вы хотите запустить команду, требующую повышенных привилегий, например tcpdump, добавьте sudo перед timeout:

sudo timeout 300 tcpdump -n -w data.pcap

 

Отправка определенного сигнала

Если сигнал не подается, timeout отправляет сигнал SIGTERM в управляемую команду, когда достигнут предел времени. Вы можете указать, какой сигнал отправить, используя опцию -s( –signal).

Например, чтобы отправить SIGKILL в команду ping через одну минуту, вы будете использовать:

sudo timeout -s SIGKILL ping 8.8.8.8

 

Сигнал может быть указан как его имя SIGKILL или его номер как 9. Следующая команда идентична предыдущей:

sudo timeout -s 9 ping 8.8.8.8

 

Чтобы получить список всех доступных сигналов, используйте команду kill -l:

kill -l

 

Читать  kubectl apply vs create. Какую команду использовать для создания ресурсов в кластерной среде Kubernetes?

Уничтожение застрявших процессов

SIGTERM сигнал по умолчанию, отправляемый при превышении лимита времени, может быть перехвачен или проигнорирован некоторыми процессами. В этих ситуациях процесс продолжает выполняться после отправки сигнала завершения.

Чтобы убедиться, что отслеживаемая команда уничтожена, используйте параметр -k( –kill-after), следующий за периодом времени. Когда эта опция используется после достижения заданного временного предела, команда timeout отправляет SIGKILL управляемой программе сигнал, который не может быть перехвачен или проигнорирован.

В следующем примере команда timeout запускается в течение одной минуты, и, если она не прервана, она уничтожит ее через десять секунд:

sudo timeout -k 10 1m ping 8.8.8.8

 

timeout -k “./test.sh”

убит по истечении заданного срока

 

Сохранение статуса выхода

timeout возвращает 124, когда достигнут срок. В противном случае он возвращает состояние завершения управляемой команды.

Чтобы вернуть статус завершения команды, даже если достигнут предел времени, используйте параметр –preserve-status:

timeout --preserve-status 5 ping 8.8.8.8

 

Запуск на переднем плане

По умолчанию timeout запускается как управляемая команда в фоновом режиме. Если вы хотите выполнить команду на переднем плане, используйте параметр –foreground:

timeout --foreground 5m ./script.sh

 

Эта опция полезна, когда вы хотите запустить интерактивную команду, которая требует ввода данных пользователем.

 

Вывод

Команда timeout используется для запуска данной команды с ограничением по времени.

timeout это простая команда, которая не имеет много вариантов. Обычно вы вызываете timeout только с двумя аргументами, продолжительностью и управляемой командой.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читайте также

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close