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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение.

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

Was this helpful?

0 / 0

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