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

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

Читать  Как включить сжатие файловой системы Btrfs

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

Редактор: AndreyEx

Рейтинг: 4.5 (45 голосов)
Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

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

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


Загрузка...

Спасибо!

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

Прокрутить страницу до начала