ГлавнаяОперационные системыLinuxКак запускать команды Bash в фоновом режиме в Linux

Как запускать команды Bash в фоновом режиме в Linux

Нет ничего более раздражающего, чем запустить команду в терминале и заставить ее работать в течение нескольких минут, а иногда и часов, и вы не сможете снова использовать свой терминал. Конечно, вы можете использовать вкладки, но это неуклюжее решение и не всегда оптимальное, поскольку вам может понадобиться видеть обновления во время работы. Здесь мы покажем вам несколько различных способов запуска bash-команды в фоновом режиме в Linux.

Читайте также: Как использовать команду lsof в Linux для вывода списка открытых файлов

Завершите команду символом &

Если вы хотите перевести команду в фоновый режим, используйте &в конце — это простой способ сделать это. Таким образом, вы можете выполнить команду в фоновом режиме и продолжать использовать терминал во время его работы. Однако здесь есть одна загвоздка. Использование &не отключает от вас команду; это просто отодвигает его на задний план. Это означает, что пока вы пытаетесь использовать терминал, все,>Завершите команду символом &OUTили STDERR, все равно будет напечатано, что может отвлекать.

Скриншот от 2021 01 14 16 21 23
COMMAND &

Когда сеанс терминала закрывается, команда завершается. Вы также можете отменить команду, введя команду jobs, найдя номер выполняющейся команды и уничтожив ее с помощью команды kill. Этот синтаксис следующий:

Скриншот от 2021 01 14 16 21 48
kill %1

Использовать &удобно, если вам нужно немного отложить что-то, но не ждите, что это будет продолжаться вечно.

Читайте также: Как использовать команду dd в Linux

& После команды отмените ее

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

Чтобы использовать этот метод, начните с добавления &.

COMMAND &

Как упоминалось выше, использование &переводит эту команду в фоновый режим, но не отделяет ее от пользователя. Вы можете убедиться в этом, набрав jobsв терминале. Он покажет команду, работающую в фоновом режиме, как мы видели раньше.

Просто введите disownв оболочку, и она сделает именно это. (И вы можете еще раз убедиться в этом с помощью команды jobs.)

Скриншот от 2021 01 14 16 26 01

Теперь вы можете закрыть свой терминал и продолжить свой день. Он по-прежнему будет передавать данные на STDOUTили STDERR, но как только вы >& После команды отмените еетам ничего не увидите. Вы можете снова найти команду с помощью команд topили psи уничтожить ее с помощью команды kill.

Скриншот от 2021 01 14 16 28 42

Читайте также: Как использовать команду Rm в Linux

& После команды с /dev/null

Добавление &после команды переведет команду в фоновый режим, но в результате фоновая команда продолжит печатать сообщения в терминал по мере его использования. Если вы хотите предотвратить это, рассмотрите возможность перенаправления команды на /dev/null.

Скриншот от 2021 01 14 16 31 33
COMMAND &>/dev/null &

<

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

Читайте также: Полное руководство по командам Apt и Apt-Get

Нет, с & и /dev/null

В отличие от предыдущих команд, использование nohupпозволяет запускать команду в фоновом режиме и поддерживать ее работу. Как? nohupобходит сигнал HUP (зависание сигнала), позволяя выполнять команды в фоновом режиме, даже когда терминал выключен. Объедините эту команду с перенаправлением на «/dev/null» (чтобы nohup не создавал файл nohup.out), и все уходит в фоновый режим с помощью одной команды.

nohup COMMAND &>/dev/null &
Скриншот от 2021 01 14 16 32 43

Читайте также: Как создать SSL-сертификаты в Linux с помощью Op>& После команды с /dev/nullьных программ в Linux сегодня имеют встроенные функции, позволяющие им работать в фоновом режиме без особых усилий. Наряду с этим современные системы инициализации (например, системный ) позволяют пользователям запускать такие программы, как службы, при загрузке или в любое время.

Тем не менее, некоторые программы в Linux не имеют возможности запускаться в качестве демона или интегрироваться с современными системами инициализации. Это реальное неудобство, но оно вполне объяснимо, поскольку не у всех разработчиков есть навыки и время для добавления новых функций.

К счастью, такие команды, как nohupили disown, все еще существуют и могут закрыть пробел в перемещении подобных программ на задний план. Они не идеальны и не изящны, но при необходимости выполняют свою работу.

Если вам понравилась эта статья о Linux, обязательно ознакомьтесь с другими нашими материалами о Linux, например как подключить свою учетную запись Google к GNOME Shell , лучшие дистрибутивы Linux для пользовател>Нет, с & и /dev/nulls://saintist.ru/2021/01/11/komandy-linux-ls/" title="Команды LS, которые вам нужно знать">Команды LS, которые вам нужно знать .

Читайте также: Как использовать cURL для передачи данных из командной строки и многого другого

ПОХОЖИЕ СТАТЬИ

Популярные записи