Поиск по сайту:
Знание есть сила, сила есть знание (Ф. Бэкон).

Команда 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» указывает сигнал, который будет отправлен команде, если она превысит лимит времени ожидания. Этот сигнал приведет к немедленному завершению команды, вместо ожидания ее корректного завершения.

Читать  Как установить Steam на Ubuntu 20.04

Например, предположим, что мы хотим запустить команду «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)
Загрузка...
Поделиться в соц. сетях:



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

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

**ссылки nofollow

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


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

Спасибо!

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