Команды для управления процессами в Linux

В этой статье мы обсудим управление процессами. Процесс в Linux — это не что иное, как исполняемая программа. То есть это запущенный экземпляр программы. Любая команда, которую вы выполняете, запускает процесс.

Типы процессов

В Linux процессы могут быть двух типов:

  • Процессы переднего плана — зависят от ввода пользователя. Они также называются интерактивными процессами.
  • Фоновые процессы — работают независимо от пользователя. Называются неинтерактивными или автоматическими процессами.

Состояния процесса в Linux

Процесс в Linux после его создания и до завершения может проходить через разные состояния, а именно:

  • Running (выполняется) — процесс в состоянии выполнения, то есть он запущен или готов к запуску.
  • Sleeping (спящий) — процесс находится в спящем состоянии, пока ожидает доступного ресурса:
    • Interruptible sleep (прерывистый сон) — процесс в состоянии прерывистого сна может просыпаться для обработки сигналов.
    • Uninterruptible sleep (Непрерывный сон) — процесс не будет просыпаться для обработки сигналов.
  • Stopped (остановлен) — процесс переходит в это состояние, когда получает сигнал для остановки.
  • Zombie — проще говоря, “мертвый” процесс, запись о котором все еще присутствует в таблице.

Команды для управления процессами

В Linux доступны две команды для отслеживания запущенных процессов — Top и Ps.

1: Команда top

Для отслеживания запущенных процессов вы можете выполнить команду top:

$ top

Эта команда выводит список процессов, которые работают в реальном времени, а также сколько они занимают памяти и CPU. Давайте подробнее разберем ее вывод:

  • PID: уникальный идентификатор процесса, присвоенный каждому процессу.
  • User: имя владельца процесса.
  • PR: приоритет, присвоенный процессу при планировании.
  • NI: значение ‘nice’ процесса.
  • VIRT: объем виртуальной памяти, которую занимает процесс.
  • RES: объем физической памяти, используемой процессом.
  • SHR: объем памяти, разделяемой с другими процессами.
  • S: состояние процесса:
    • “D” = непрерывный сон
    • “R” = запущен
    • “S” = спящий
    • “T” = отслежен или остановлен
    • “Z” = зомби
  • %CPU: процент CPU, используемого процессом.
  • %МЕМ: процент RAM, которую занимает процесс.
  • TIME+: общее процессорное время, потребляемое процессом.
  • Command: команда для активации процесса.

Перемещаться вверх и вниз по списку можно клавишами со стрелками вверх/вниз. Для выхода из команды top нажмите q. Чтобы завершить процесс, выделите его клавишами со стрелками и нажмите ‘k’.

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

2: Команда ps

ps — это сокращение от “Process Status”. Она выводит запущенные в данный момент процессы. Но, в отличие от команды top, результат не генерируется в реальном времени.

$ ps

Рассмотрим ее вывод подробнее:

  • PID — идентификатор процесса.
  • TTY — тип терминала.
  • TIME — общее время работы процесса.
  • CMD — имя команды, которая запускает процесс.

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

$ ps -u

На скриншоте вы можете увидеть следующие данные:

  • %CPU — количество вычислительной мощности, которую занимает процесс.
  • %MEM — объем памяти, занимаемой процессом.
  • STAT — состояние процесса.

Хотя команда ps выводит только запущенные в данный момент процессы, с помощью нее можно посмотреть список всех процессов:

$ ps -A

Эта команда выводит список даже тех процессов, которые в данный момент не запущены.

3: Остановка процесса

Чтобы остановить процесс в Linux, выполните команду “kill”. kill отправляет сигнал процессу.

Есть разные типы сигналов, которые можно отправлять. Однако самый частый — “kill -9”, который является “SIGKILL”.

Вы можете посмотреть все доступные сигналы с помощью следующей команды:

$ kill -L

Сигнал по умолчанию — 15, то есть SIGTERM. Это означает, что если вы просто выполняете команду kill без номера, она отправляет сигнал SIGTERM.

Синтаксис для остановки процесса:

$ kill [pid]

В качестве альтернативы вы также можете выполнить:

$ kill -9 [pid]

Эта команда отправит процессу сигнал “SIGKILL”. Ее следует выполнять в случае, если процесс игнорирует обычный запрос на остановку.

4: Изменение приоритета процесса

В Linux между процессами можно расставлять приоритеты. Значение приоритета для процесса называется ‘Niceness’, оно может варьироваться от -20 до 19. 0 — значение по умолчанию.

Четвертый столбец в выводе команды top — это столбец для значения niceness.

Чтобы запустить процесс и присвоить ему значение nice, которое отличается от значения по умолчанию, выполните команду:

$ nice -n [value] [process name]

Для изменения значения nice уже запущенного процесса выполните:

renice [value] -p 'PID'

Заключение

В этом туториале мы рассмотрели в основном практические аспекты управления процессами в Linux. Теория управление процессами — это обширная тема, и ее полный разбор не входит в задачи данного мануала.

Читайте также: 

Tags:

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