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

Как запустить команду в течение определенного времени в Linux

На днях я переносил большой файл с помощью rsync в другую систему в моей локальной сети. Поскольку это очень большой файл, на его создание ушло около 20 минут. Я не хочу ждать так долго, а также не хочу вручную завершать процесс, нажав CTRL+C. Мне просто интересно, есть ли какие-нибудь простые способы запустить команду в течение определенного времени и автоматически завершить ее, как только время истечет, в Linux и Unix-подобных операционных системах - отсюда и этот пост. Читай дальше.

Запустите команду в течение определенного времени в Linux

Мы можем сделать это двумя способами, используя утилиты timeout и timelimit.

Способ 1 — использование команды «timeout»

Самый распространенный метод — использование для этой цели команды timeout. Для тех, кто не знает, команда timeout эффективно ограничивает абсолютное время выполнения процесса. Команда timeout является частью пакета GNU coreutils, поэтому она предустановлена во всех системах GNU/Linux.

Допустим, вы хотите запустить команду только в течение определенного времени, а затем автоматически завершить ее по истечении этого времени. Для этого мы используем:

timeout <time-limit-interval> <command>

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

timeout 10s tail -f /var/log/pacman.log

Запустите команду в течение определенного времени, используя команду таймаута

Вам также не нужно указывать суффикс «s» для секунд. Следующая команда аналогична приведенной выше.

timeout 10 tail -f /var/log/pacman.log

Другие доступные суффиксы:

  • 'м' в течение нескольких минут,
  • 'ч' для часов
  • «д» в течение нескольких дней.

Если вы запустите эту команду tail -f /var/log/pacman.log, она будет продолжать работать до тех пор, пока вы не завершите ее вручную, нажав CTRL+C. Однако, если вы запустите его вместе с командой timeout, он будет автоматически уничтожен по истечении заданного интервала времени.

На всякий случай, если команда все еще выполняется даже по истечении времени ожидания, вы можете отправить сигнал kill, как показано ниже.

timeout -k 20 10 tail -f /var/log/pacman.log

В этом случае, если команда Tail все еще работает через 10 секунд, команда timeout отправит ей сигнал уничтожения через 20 секунд и завершит ее.

Команда Tmeout может быть особенно полезна при устранении неполадок оборудования. Например, выполните следующую команду, чтобы отобразить все сообщения из кольцевого буфера ядра, но только на 10 секунд.

timeout 10 dmesg -w

Для получения более подробной информации проверьте справочные страницы.

man timeout

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

Также рассмотрите возможность использования Cpulimit — простого приложения для ограничения использования процессора процессом. Для получения более подробной информации проверьте следующую ссылку.

  • Как ограничить загрузку процессора процессом в Linux

Способ 2 — использование программы «Timelimit»

Утилита Timelimit выполняет заданную команду с предоставленными аргументами и завершает порожденный процесс через заданное время с заданным сигналом. Сначала он передает сигнал предупреждение, а затем, по истечении времени ожидания, отправляет сигнал уничтожения.

В отличие от утилиты timeout, Timelimit имеет больше возможностей. Вы можете передать несколько аргументов, таких как killsig, alertsig, killtime, alerttime и т. д.

Он доступен в репозиториях по умолчанию систем на базе Debian. Итак, вы можете установить его с помощью команды:

sudo apt-get install timelimit

Для систем на базе Arch он доступен в AUR. Таким образом, вы можете установить его с помощью любых вспомогательных программ AUR, таких как Pacaur, Packer, Yay, Yaourt и т. д.

Для других дистрибутивов загрузите исходный код здесь и установите его вручную.

После установки программы Timelimit выполните следующую команду в течение определенного времени, например 10 секунд:

timelimit -t10 tail -f /var/log/pacman.log

Если вы запустите timelimit без каких-либо аргументов, будут использованы значения по умолчанию: warntime=3600 секунд, warnsig=15, killtime=120, < Strong>killsig=9.

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

man timelimit

И это все на сегодня. Я надеюсь, что это было полезно. Впереди еще больше хороших вещей. Следите за обновлениями!

Ваше здоровье!

Ресурс:

  • Веб-сайт с ограничением по времени

Статьи по данной тематике