Отправить процесс в фоновый Linux

Send Process Background Linux



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

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







В этом руководстве мы обсудим, что такое фоновые процессы и процессы переднего плана, включая создание и управление ими в Linux.



Что такое процесс?

Позвольте мне начать с базового уровня: что такое процесс?



В Linux процесс - это экземпляр программы. Обычно это означает, что любая команда или исполняемый файл в оболочке является процессом.





В основном есть два типа процессов:

  • Процессы переднего плана
  • Фоновые процессы

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



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

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

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

Например, если мы запустим браузер Firefox в оболочке, он будет занимать сеанс до завершения процесса.

$Fire Fox


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

Чтобы решить эту проблему, мы можем сделать это двумя способами:

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

Первый метод использует знак амперсанда &. Это указывает оболочке выполнить любую команду, предшествующую амперсанду в фоновом режиме.

Пример:

Fire Fox&

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

Он также дает два числовых идентификатора. Первый в квадратных скобках - это идентификатор задания, а следующий - идентификатор процесса.

2: Используя CTRL + Z, команду bg.

Следующий метод, который вы можете использовать для перевода процесса в фоновый режим, - это использование сочетания клавиш CTRL + Z. Это предотвращает блокировку процесса оболочкой. Затем вы можете использовать команду bg, чтобы переместить его в фоновый режим.

Например, начните с запуска Firefox как:

$Fire Fox

Во время выполнения процесса нажмите CTRL + Z. Это вернет приглашение вашей оболочки. Наконец, введите команду bg, чтобы перевести процесс в фоновый режим.

Как показать фоновые процессы

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

Например:

$рабочие места

Пример вывода фоновых заданий:

Чтобы вывести на передний план процесс, работающий в фоновом режиме, используйте команду fg, за которой следует идентификатор задания.

Например, чтобы вывести задание firefox на передний план, мы используем команду:

$фг %1

Чтобы снова добавить фон, нажмите CTRL + Z, а затем команду bg.

Как сделать процесс устойчивым после смерти оболочки

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

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

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

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

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

Например, чтобы запустить Firefox с nohup, используйте команду:

нетуFire Fox&

Это запустит процесс в фоновом режиме, поскольку оболочка будет завершена.

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

Заключение

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