Site icon ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Вторник, 9 декабря, 2025

Как приостановить и возобновить процесс в Linux

Как приостановить и возобновить процесс в Linux

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

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

 

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

В Linux вы можете использовать сочетание клавиш CTRL+Z для приостановки выполнения любой команды в фоновом режиме. Это работает в Ubuntu и других дистрибутивах Linux.

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

Рассмотрим ситуацию: мы редактируем текстовый файл в Nano и вдруг хочу приостановить редактирование. Для этого мы используем сочетание клавиш CTRL+Z.

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

 

Список приостановленных процессов в Linux

Чтобы вывести список всех приостановленных процессов, работающих в фоновом режиме, можно использовать две разные команды: ps и jobs (рекомендуется).

 

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

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

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

ps

 

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

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

jobs

 

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

 

Возобновить приостановленный процесс.

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

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

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

fg

 

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

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

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

 

Замените <suspended-process-id> на идентификатор приостановленного процесса, который вы хотите возобновить. В моем случае я заменю <suspended-process-id> на 2, чтобы возобновить команду ping.

 

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

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

 

Поддерживать приостановленные процессы в фоновом режиме

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

 

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

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

Ниже мы запустили команду sleep 500 и приостановил её с помощью сочетания клавиш CTRL+Z, которое заморозило процесс. Затем я снова использовал команду bg для перезапуска приостановленного процесса в фоновом режиме.

jobs
sleep 500
jobs
bg $1
jobs

 

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

 

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

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

 

 

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

ps

kill -9 <идентификатор-процесса>

 

Замените <process-id> на процесс, который вы хотите завершить или остановить. В моём случае я хочу остановить фоновый процесс top, поэтому я заменю <process-id> на PID top процесса.

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

kill -9 $(jobs -p)

 

Выводы

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

Exit mobile version