Нет ничего более раздражающего, чем запустить команду в своем терминале и заставить ее работать в течение минут, а иногда и часов, и не иметь возможности снова использовать свой терминал. Конечно, вы можете использовать вкладки, но это неуклюжее решение, и оно не всегда оптимально, потому что вы можете видеть обновления во время работы. Здесь мы покажем вам несколько различных способов запуска команд bash в фоновом режиме в Linux.
Завершите команду с помощью &
Если вы хотите поместить команду в фоновый режим, используйте &
в конце - это простой способ сделать это. Таким образом, вы можете выполнить команду в фоновом режиме и продолжать использовать свой терминал во время его работы. Тем не менее, здесь есть одна загвоздка. Использование &
не отключает команду от вас; он просто отодвигает его на задний план. Это означает, что пока вы пытаетесь использовать терминал, все, что команда хочет передать в STDOUT
или STDERR
, будет напечатано, что может отвлекать.
КОМАНДА &
Когда сеанс терминала закрывается, команда завершается. Вы также можете завершить команду, выполнив команду jobs
, найдя номер выполняющейся команды и завершив ее с помощью команды kill
. Этот синтаксис выглядит следующим образом:
kill% 1
Использование &
хорошо, если вам нужно немного оттолкнуть что-то, но не ожидаете, что это будет продолжаться вечно.
& После команды, затем отклонить ее
Выполнение команды с помощью всего лишь &
отодвигает ее на задний план и поддерживает ее выполнение, пока открыто окно терминала. Однако, если вы хотите, чтобы эта команда работала постоянно, даже после завершения сеанса терминала, вы можете использовать команду disown
.
Чтобы использовать этот метод, начните с добавления &
.
КОМАНДА &
Как упоминалось выше, использование &
переводит эту команду в фоновый режим, но не отключает ее от пользователя. Вы можете проверить это, набрав jobs
в терминале. Он покажет, как команда работает в фоновом режиме, как мы видели раньше.
Просто введите disown
в оболочку, и она сделает именно это. (И вы можете еще раз проверить это с помощью команды jobs
.)
Теперь вы можете закрыть свой терминал и продолжить свой день. Он по-прежнему будет связывать вещи с STDOUT
или STDERR
, но как только вы выйдете и снова откроете свой терминал, вы ничего там не увидите. Вы можете снова найти команду с помощью команд top
или ps
и убить ее с помощью команды kill
.
& После команды с / dev / null
Добавление &
после команды переведет команду в фоновый режим, но в результате фоновая команда продолжит выводить сообщения в терминал по мере того, как вы ее используете. Если вы хотите предотвратить это, попробуйте перенаправить команду на / dev / null
.
COMMAND &>/dev/null &
Это не мешает команде закрыться при закрытии терминала. Однако, как упоминалось выше, можно использовать disown
, чтобы отключить выполняемую команду от пользователя. Вы также можете убить его любым из методов, упомянутых выше, если вы больше не хотите, чтобы он запускался.
Nohup, с & и / dev / null
В отличие от предыдущих команд, использование nohup
позволяет запускать команду в фоновом режиме и поддерживать ее выполнение. Как? nohup
обходит сигнал HUP (сигнал зависания), что позволяет запускать команды в фоновом режиме, даже когда терминал выключен. Объедините эту команду с перенаправлением на "/ dev / null" (чтобы nohup не создавал файл nohup.out), и все перейдет в фон с помощью одной команды.
nohup COMMAND &>/dev/null &
Большинство терминальных программ в Linux сегодня имеют встроенные функции, позволяющие им работать в фоновом режиме без особых усилий. Наряду с этим современные системы инициализации (например, systemd) могут позволить пользователям запускать такие программы, как службы, при загрузке или в любое время.
Тем не менее, некоторые программы в Linux не могут работать как демон или интегрироваться с современными системами инициализации. Это реальное неудобство, но его можно понять, поскольку не у всех разработчиков есть навыки или время для добавления новых функций.
К счастью, такие команды, как nohup
или disown
, по-прежнему существуют и могут закрыть пробел в перемещении подобных программ на задний план. Они не идеальны или необычны, но они справляются со своей работой, когда это необходимо.
Если вам понравилась эта статья о Linux, обязательно ознакомьтесь с некоторыми из других наших материалов по Linux, например, как подключить свою учетную запись Google к оболочке GNOME, 5 лучших дистрибутивов Linux для пользователей Windows в 2021 году и 15 команд LS, которые вам нужно знать.
По теме: