Поиск по сайту:

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

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

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

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

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

Теперь давайте продолжим и научимся приостанавливать или приостанавливать работающий процесс и возобновлять его позже в Linux и Unix-подобных операционных системах.

Приостановить процесс и возобновить его позже в Linux

Это абсолютно легко! Все, что вам нужно сделать, это найти PID (идентификатор процесса) и использовать команду ps или ps aux и затем приостановите его и наконец возобновите с помощью команды kill.

Давайте посмотрим пример. Я собираюсь загрузить образ сетевой загрузки Ubuntu 18.04 с помощью команды wget:

wget http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso &

Здесь символ & переместит выполняющуюся задачу (т. е. wget) на задний план, не закрывая ее.

Теперь я хочу приостановить эту задачу и запустить другие важные задачи. Для этого сначала найдите запущенные процессы с помощью команды:

ps

Пример вывода:

  PID TTY          TIME CMD
30056 pts/0    00:00:00 bash
16143 pts/0    00:00:01 wget
32677 pts/0    00:00:00 ps

Как видите, PID команды wget — 16143.

Давайте остановим этот процесс сейчас. Для этого выполните следующую команду из вашего терминала:

kill -STOP 16143

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

ps

Пример вывода:

PID TTY TIME CMD
8155 pts/0 00:00:00 bash
16143 pts/0 00:00:01 wget
16398 pts/0 00:00:00 ps

[1]+ Stopped wget http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso

Видеть? Процесс wget остановлен.

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

kill -CONT 16143

Чтобы проверить, запущен ли процесс, выполните команду ps.

ps

Приостановить процесс и возобновить его позже в Linux

Видеть? Процесс, который мы остановили ранее, возобновился!

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

ТЛ;ДР

Сначала найдите pid запущенного процесса с помощью команды ps. Затем приостановите его, используя kill -STOP , а затем переведите систему в спящий режим. Возобновите работу системы и возобновите остановленный процесс с помощью команды kill -CONT .

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

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

И это все. Теперь вы знаете, как приостановить и возобновить процесс в Linux и Unix-подобных операционных системах. Надеюсь это поможет.

Рекомендуется к прочтению:

  • Автоматическое выключение, перезагрузка, приостановка работы и перевод системы Linux в спящий режим в определенное время
  • Автоматический выход вашей системы Linux из спящего режима или режима гибернации
  • Reptyr – перемещение запущенного процесса с одного терминала на другой, не закрывая его
  • Как добавить команды Linux в очередь и выполнять их одну за другой
  • Как отобразить информацию о процессе с помощью Procs в Linux

Статьи по данной тематике