Найти в Дзене

Остановка и запуск процесса в Linux

При работе в консоле Linux вы запускаете одну команду за другой. Например, вы редактируете файл конфигурации с помощью редакторов nano или vim или загружаете файлы с помощью команды wget и вдруг захотели просмотреть какие-то другие файлы или вам нужно выполнить другую команду. При таком развитии событий, у вас есть несколько вариантов. Первый, вы можете переключиться в другую консоль. Второй закрыть файл конфигурации или отмените копирование файлов. Если с редактированием файла еще все понятно. После закрытия его можно продолжить редактировать, если сохранили изменения. Но вот, если вы находитесь в середине процесса скачивания файла из сети, это может стоить вам времен. Есть еще третий вариант, перевести процесс в фоновый режим или, другими словами, приостановить его на некоторое время и возобновить позже. Вот об этом варианте мы сегодня поговорим. Для того, чтобы приостановить процесс в Linux , вы можете использовать сочетание клавиш CTRL+Z. Это работает на всех дистрибут
Оглавление

При работе в консоле Linux вы запускаете одну команду за другой. Например, вы редактируете файл конфигурации с помощью редакторов nano или vim или загружаете файлы с помощью команды wget и вдруг захотели просмотреть какие-то другие файлы или вам нужно выполнить другую команду.

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

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

Приостановить процесс в Linux.

Для того, чтобы приостановить процесс в Linux , вы можете использовать сочетание клавиш CTRL+Z. Это работает на всех дистрибутивах Linux, которые я встречал.

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

Например, Вы редактируете текстовый файл с помощью Nano и вдруг хотите приостановить его в середине редактирования.

-2

Используйте сочетание клавиш CTRL+Z, чтобы приостановить редактирование

-3

Команда «fg» вернет вас в экран редактирования редактора и вы сможете продолжить с того места, где вы остановились.

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

Просмотр списка приостановленных процессов.

Чтобы просмотреть все приостановленные процессы в фоновом режиме, вы можете использовать две разные команды: ps и jobs.

В чем разница между командами ps и jobs?

Команда ps отображает список всех запущенных процессов в вашей системе. А команда jobs отображает только приостановленные процессы с помощью сочетания клавиш CTRL + Z в вашей системе.

Давайте найдем все приостановленные процессы с помощью команды ps:

$ ps
PID TTY TIME CMD
2491 pts/0 00:00:00 bash
3081 pts/0 00:00:00 nano
4340 pts/0 00:00:00 ping
4355 pts/0 00:00:00 top
4364 pts/0 00:00:00 ps

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

Вот в том и проблема, что не совсем понятно, какой процесс остановлен, а какой работает. Поэтому команда ps не особо информативна в этом случае.

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

$ jobs
[1] Stopped nano test
[2]- Stopped ping roadit.ru
[3]+ Stopped top

В этом случае вы можете точно определить только приостановленные процессы.

Возобновление процесса

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

Если вы выполните команду fg без идентификатора процесса, она возобновит последний процесс, который вы отправили в фон.

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

$ fg
-4

В моем случае top имеет символ (+). Таким образом, это будет первый процесс, который возобновится с помощью команды fg.

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

$ fg <идентификатор процесса>

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

-5

Будет ли это работать после перезагрузки системы?

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

Продолжить работу приостановленного процесса в фоне.

Команда bg полезна, если вы хотите продолжать работу процесса в фоновом режиме без его остановки.

В чем разница между bg и fg?

Команда fg переключает недавно приостановленный процесс из фонового режима в приоритетный, а команда bg сохраняет работу процесса в фоновом режиме.

Например, запустим sleep 500 и нажмем ctrl+Z

-6

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

Теперь запустим работу этого процесса в фоне с помощью команды bg

-7

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

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

Завершить приостановленный процесс.

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

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

Для этого сначала необходимо узнать PID приостановленного процесса с помощью команды ps. Затем укажите этот PID с помощью команды kill, чтобы остановить этот процесс.

$ ps
$ kill -9 <PID>

Замените PID на PID процесса, который вы хотите завершить или остановить. В моем случае я хочу остановить фоновый процесс приложения top:

-8

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

$ kill -9 $(jobs -p)
-9

Заключение.

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

P.S. Если вам интересен материал не забывайте ставить палец вверх под статьей. А так же, подписывайтесь на анонсы новых статей в телеграмм и на сайте RoadIT