Команда Timeout в Linux

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

linux

Команда тайм-аута в Linux

Здесь описано, как использовать команду timeout в Linux. Вот синтаксис команды timeout.

Длительность может быть целым числом или числом с плавающей точкой, за которым по желанию следует единица времени.

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

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

Вот команда для завершения выполнения через 5 секунд.

А вот команда, завершающая выполнение через 10 секунд.

Вот команда для завершения выполнения через 2 минуты 30 секунд.

Если вам нужно разрешение sudo для выполнения вашей команды, вам нужно указать его перед командой timeout.

Команда timeout позволяет посылать определенные сигналы по истечении периода таймаута. По умолчанию она посылает команду SIGTERM при достижении лимита времени. Вместо этого вы можете послать сигнал SIGKILL, используя опцию -s.

Кроме того, вы можете указать номер сигнала, например 9.

Сигнал SIGTERM, посылаемый командой timeout, может быть проигнорирован некоторыми процессами. В таких случаях вы можете указать команде timeout послать команду SIGKILL через другой промежуток времени, используя опцию -k. Вот команда, посылающая сигнал SIGTERM через 1 минуту, а затем посылающая команду SIGKILL через 10 секунд, в случае, если процесс не будет завершен.

Команда timeout возвращает статус exist 124 в случае, если таймаут достигнут, в противном случае она возвращает статус выхода из команды. Если вы хотите зафиксировать статус выхода, вы можете сделать это с помощью опции -preserve-status.

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

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий