Cookie

Отправить процесс в фоновом режиме и на переднем плане с помощью Linux

Опубликовано TheJoe на

Приблизительное время чтения: 2 минут

предосторожность


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

Несколько статей назад мы говорили о screen: приложение командной строки, которое позволяет вам создавать виртуальные сеансы, содержащие виртуальные окна терминала, к которым мы можем подключаться или отключаться по желанию через текущий сеанс терминала.

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

Также в этом случае команда может длиться несколько минут, или даже часы. Поэтому необходима система для освобождения терминала и выполнения новых команд., оставив старые в фоновом режиме.

Запустить фоновый процесс

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

~# updatedb

У нас есть два решения.

Использовать “е – коммерческий” (&)

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

~# updatedb &
[1] 342824
~#

В этом сценарии, а также сделать терминал доступным сразу, команда возвращает идентификационный номер процесса (ПИД) с помощью которого мы можем отслеживать статус выполнения через команду ps.

~# ps ax | grep updatedb
342824 pts/2 S 0:00 /bin/sh /usr/bin/updatedb
~#

Используйте сочетание клавиш Ctrl+Z и команду bg

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

~# updatedb
^Z                       # Here i clicked Ctrl+Z
[2]+ Fermato updatedb
~# bg
[2]+ updatedb &
~#

Выше я снова запустил команду updatedb, Я приостановил его с помощью ярлыка Ctrl+Z, я выполнил команду bg перевести приостановленную команду в фоновый режим.

Смотри сюда:  Видео deshake против Linux: стабилизировать шаткую видео с Transcode пт. 2

Список фоновых процессов

и, но я не хочу терять контроль. Сколько и какие процессы я отправил в фон?

:~# jobs
[1]- In esecuzione sleep 500 &
[2]+ In esecuzione updatedb &
~#

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

~# jobs
[1]-  In esecuzione           sleep 500 &
[2]+  In esecuzione           updatedb &
~# fg %2
updatedb

Конечно, мы можем снова перевести только что восстановленную команду в фоновый режим с помощью Ctrl+Z е bg замыкая нас в вечную петлю.

Сделайте так, чтобы процесс сохранялся, даже когда оболочка закрыта

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

Проще всего в таких случаях использовать screen, но в целом, если это не то, что мы хотим, мы можем заставить процесс сохраняться даже после закрытия сеанса просто из сеанса с помощью команды nohup.

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

команда nohup он должен использоваться перед процессом, который мы хотим “Отключить”.

~# nohup updatedb &

Теперь мы можем завершить текущий сеанс, откройте другой терминал и убедитесь, что процесс все еще работает с ps ax | grep updatedb.


TheJoe

Я держу это в качестве хобби блог от 2009. Я графики энтузиастов, технология, Программное обеспечение с открытым исходным кодом. Среди моих статей не будет трудно найти о музыке, и некоторые личные размышления, но я предпочитаю, чтобы направить линию блога в основном технологии. Для получения дополнительной информации связаться со мной.

0 Комментарии

оставьте ответ

Заполнитель аватара

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатывается комментарий данных.