Linux: Запуск команд в фоновом режиме

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

Ознакомиться с тарифами VPS хостинга можно тут

Что такое фоновый процесс в Linux?

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

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

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

Использование символа амперсанда (&)

Самый простой способ запустить команду или процесс в фоновом режиме в Linux — это добавить амперсанд (&) в конец команды. Это заставит систему выполнить команду в фоновом режиме.

Пример:

sleep 1000 &

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

Использование команды nohup

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

Пример:

nohup sleep 1000 &

Команда nohup записывает вывод процесса в файл nohup.out, если вы не укажете другое место для вывода.

Пример с запуском скрипта в фоне

Предположим, у вас есть Bash-скрипт, который вы хотите запустить в фоновом режиме. Для этого можно использовать тот же синтаксис с амперсандом:

bash myscript.sh &

Если вы хотите, чтобы скрипт продолжал работать после завершения сеанса, используйте nohup:

nohup bash myscript.sh &

Вывод будет записан в файл nohup.out, что позволяет вам позже просмотреть результаты работы скрипта.

Перевод уже запущенного процесса в фоновый режим

Если процесс уже запущен, но вы хотите перевести его в фоновый режим, можно использовать комбинацию клавиш и команду bg. Например, если вы запустили команду, но по ошибке не добавили амперсанд и она заблокировала ваш терминал, выполните следующие шаги:

  1. Нажмите Ctrl + Z, чтобы приостановить процесс.
  2. Используйте команду bg для перевода его в фоновый режим:

    bg

Если у вас несколько приостановленных процессов, можно указать номер процесса:

bg %1

Где %1 — это идентификатор приостановленного процесса, который можно узнать с помощью команды jobs.

Проверка состояния фоновых процессов

Чтобы просмотреть список всех запущенных фоновых процессов в текущей сессии, используйте команду jobs:

jobs

Вы увидите список процессов с их номерами. Например:

[1]+ 1234 Stopped sleep 1000

Здесь 1234 — это PID (идентификатор процесса), а sleep 1000 — это выполняемая команда.

Перевод фонового процесса в передний режим

Если вам нужно вернуть фоновый процесс в передний режим (например, для завершения или продолжения работы с ним), используйте команду fg:

fg %1

Где %1 — это идентификатор задачи, который вы получили с помощью команды jobs.

Использование утилиты screen

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

  1. Запустите screen:

    screen

  1. Запустите нужную команду, например:

    python3 myscript.py

  1. Для выхода из сессии screen, но оставив процесс работать, нажмите Ctrl + A, затем D.

  2. Чтобы вернуться к сессии, используйте команду:

    screen -r

screen позволяет не только запускать процессы в фоновом режиме, но и повторно подключаться к сессиям, что полезно, если вы потеряли соединение с сервером.

Использование утилиты tmux

Аналогичная утилита, которая также позволяет создавать виртуальные терминалы и работать с ними в фоновом режиме, — это tmux. Эта утилита даёт возможность разделить окно терминала на несколько панелей и работать с ними независимо.

  1. Для начала работы с tmux, выполните команду:

    tmux

  1. Запустите нужную команду, например:

    python3 myscript.py

  1. Чтобы отсоединиться от сессии, нажмите Ctrl + B, затем D.

  2. Чтобы подключиться к сессии снова:

    tmux attach-session -t <session-name>

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

Запуск приложений в фоновом режиме

Для запуска приложений в фоновом режиме, например, текстовых редакторов или серверов, можно использовать те же методы. Например:

  1. Чтобы запустить сервер Apache в фоновом режиме:

    sudo apache2ctl start &

  1. Для запуска текстового редактора Vim в фоне:

    vim myfile.txt &

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

Как запустить процессы от другого пользователя в фоновом режиме?

Если вам нужно запустить процесс в фоновом режиме от имени другого пользователя, используйте команду sudo вместе с амперсандом. Например:

sudo -u username bash -c "sleep 1000" &

Эта команда выполнит процесс от имени указанного пользователя.


Преимущества и недостатки фоновых процессов

Преимущества:

  • Экономия времени: Вы можете продолжать работать с терминалом, не ожидая завершения долгих процессов.
  • Управление системными ресурсами: Фоновые процессы позволяют эффективно использовать ресурсы системы, не блокируя терминал.
  • Продолжение работы после выхода: Некоторые инструменты, такие как nohup или screen, позволяют продолжать работу с процессами, даже если вы завершаете текущую сессию.

Недостатки:

  • Сложность управления: Когда запускается много фоновых процессов, отслеживание их выполнения и остановка может стать трудной задачей.
  • Риски безопасности: Некоторые процессы могут продолжать работать в фоновом режиме, если они не были правильно настроены для автоматического завершения.

Заключение

Запуск процессов в фоновом режиме в Linux является мощным инструментом для повышения эффективности работы с сервером. Команды вроде &, nohup, bg, и fg, а также утилиты screen и tmux позволяют пользователям Linux запускать и управлять процессами без прерывания работы. Правильное использование этих команд и инструментов может значительно упростить администрирование серверов и выполнение длительных задач.

  • 1 Пользователи нашли это полезным

Помог ли вам данный ответ?

Ищете что-то другое?

mhost.by