Правильный запуск команд Bash в фоновом режиме

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

Завершите команду с помощью &

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

Скриншот с 2021 года 01 14 16 21 23

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

Скриншот с 2021 года 01 14 16 21 48

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

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

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

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

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

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

Скриншот с 2021 года 01 14 16 26 01Вы можете просто разобрать команду отказа там

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

Скриншот с 2021 года 01 14 16 28 42Отказанное задание — второе, с PID 16238.

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

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

Скриншот с 2021 года 01 14 16 31 33

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

Nohup, с & и / dev / null

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

nohup КОМАНДА &> / dev / null &

Скриншот с 2021 года 01 14 16 32 43

Большинство терминальных программ в Linux сегодня имеют встроенные функции, позволяющие им работать в фоновом режиме без особых усилий. Наряду с этим современные системы инициализации (например, systemd) могут позволять пользователям запускать такие программы, как службы, при загрузке или в любое время.

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

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

Если вам понравилась эта статья о Linux, обязательно ознакомьтесь с другими нашими материалами по Linux, например, как подключить свою учетную запись Google к оболочке GNOME, 5 из лучших дистрибутивов Linux для пользователей Windows в 2021 году и 15 команд LS, которые вам нужно знать .

Эта статья полезна? да нет

Похожие записи

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

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