Поиск по сайту:
Лучший способ защититься — не уподобляться (Марк Аврелий).

Команда Timeout в Bash без ненужной задержки

12.04.2023
Команда Timeout в Bash без ненужной задержки

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

 

Тайм-аут команды в Bash

Чтобы использовать тайм-аут команды в Bash, мы можем использовать команду «timeout». Команда «timeout» по умолчанию доступна не во всех системах, но ее можно установить с помощью менеджера пакетов в большинстве дистрибутивов Linux, вот синтаксис команды «timeout»:

timeout [OPTION] DURATION COMMAND [ARG]

 

Здесь «OPTION» — это необязательный аргумент, определяющий поведение команды тайм-аута, «DURATION» — это ограничение времени для запуска команды, а «COMMAND [ARG]» — это команда и ее аргументы, которые мы хотим запустить.

 

Например, предположим, что мы хотим запустить команду «sleep» на пять секунд, но мы хотим, чтобы тайм-аут команды истек через три секунды, и вот пример сценария оболочки:

#!/bin/bash
echo "Запуск команды sleep с тайм-аутом 3 секунды..."
timeout 3s sleep 5s
echo "Команда Sleep завершена."

 

Здесь мы указали продолжительность тайм-аута как 3 секунды, а продолжительность команды «sleep» как 5 секунд. Команда «timeout» остановит команду «sleep» через 3 секунды, даже если команда «sleep» обычно выполняется в течение 5 секунд.

Чтобы предотвратить ненужную задержку при использовании команды «timeout», мы можем использовать опцию «-k». Параметр «-k» указывает сигнал, который будет отправлен команде, если она превысит лимит времени ожидания. Этот сигнал приведет к немедленному завершению команды, вместо ожидания ее корректного завершения.

Читать  Как завершить процесс в Linux?

Например, предположим, что мы хотим запустить команду «sleep» на пять секунд, но мы хотим установить тайм-аут команды через три секунды и отправить сигнал SIGINT, если он превышает лимит времени ожидания. Мы можем сделать это, выполнив следующую команду:

#!/bin/bash
echo "Запуск команды sleep с тайм-аутом 3 секунды и сигналом SIGINT через 2 секунды”
timeout -k 2s 3s sleep 5s
echo "Команда Sleep завершена."

 

Здесь мы указали продолжительность тайм-аута как 3 секунды и сигнал, который будет отправлен как SIGINT, если он превышает предел тайм-аута. Параметр «-k 2s» указывает, что сигнал SIGINT должен быть отправлен после двух секунд ограничения времени ожидания.

 

Заключение

Команда timeout в Bash — это полезный инструмент, который может помочь вам более эффективно выполнять команды и предотвратить ненужные задержки. Используя команду «timeout» и параметр «-k», вы можете ограничить количество времени, в течение которого команда может выполняться, и отправить сигнал для ее немедленного завершения, если она превышает лимит времени ожидания. Это поможет вам сэкономить время и более эффективно запускать сценарии.

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
В сегодняшнем объявлении Intel и Arm объявили о соглашении о…

Спасибо!

Теперь редакторы в курсе.