- Работа с процессами в Linux
- Список процессов
- Ключи
- Примеры
- Убить процесс
- Подробная информация о процессе
- Потребление ресурсов процессами
- Команды для управления процессами в Linux
- Типы процессов
- Состояния процесса в Linux
- Команды для управления процессами
- 1: Команда top
- 2: Команда ps
- 3: Остановка процесса
- 4: Изменение приоритета процесса
- Заключение
Работа с процессами в Linux
Обновлено: 29.03.2023 Опубликовано: 09.11.2017
Список процессов
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 661 0.0 0.0 4072 8 tty1 Ss+ Jul03 0:00 /sbin/mingetty
root 662 0.0 0.0 4072 8 tty2 Ss+ Jul03 0:00 /sbin/mingetty
root 16355 0.0 0.0 171636 3308 pts/0 S 15:46 0:00 sudo su
root 16366 0.0 0.0 140896 1556 pts/0 S 15:46 0:00 su
root 16368 0.0 0.0 108316 1944 pts/0 S 15:46 0:00 bash
root 18830 0.0 0.0 110244 1172 pts/0 R+ 16:20 0:00 ps u
- USER — учетная запись пользователя, от которой запущен процесс.
- PID — идентификатор процесса.
- %CPU — потребление процессорного времени в процентном эквиваленте.
- %MEM — использование памяти в процентах.
- VSZ — Virtual Set Size. Виртуальный размер процесса (в килобайтах).
- RSS — Resident Set Size. Размер резидентного набора (количество 1K-страниц в памяти).
- TTY — терминал, из под которого был запущен процесс.
- STAT — текущее состояние процесса. Могут принимать значения:
- R — выполнимый процесс;
- S — спящий;
- D — в состоянии подкачки на диске;
- T — остановлен;
- Z — зомби.
- W — не имеет резидентных страниц;
- < —высоко-приоритетный;
- N — низко-приоритетный;
- L — имеет страницы, заблокированные в памяти.
- START — дата запуска процесса.
- TIME — время запуска процесса.
- COMMAND — команда, запустившая процесс.
Ключи
Ключ | Описание |
---|---|
-A | Все процессы. |
-a | Запущенные в текущем терминале, кроме главных системных. |
-d | Все, кроме главных системных процессов сеанса. |
-e | Все процессы. |
f | Показать дерево процессов с родителями. |
T | Все на конкретном терминале. |
a | Все, связанные с текущим терминалом и терминалами других пользователей. |
r | Список только работающих процессов. |
x | Отсоединённые от терминала. |
u | Показать пользователей, запустивших процесс. |
Примеры
Поиск процесса с помощью grep:
Убить процесс
Останавливаем процесс по его PID:
Если процесс не завершается, убиваем его принудительно:
Остановить все процессы с именем nginx:
Как и в случае с kill, можно это сделать принудительно:
Можно остановить все процессы конкретного пользователя:
Ищем процесс по имени, извлекаем его PID и завершаем его:
kill `ps aux | grep ‘apache’ | awk »`
* обратите внимание, что запрос может вывести несколько процессов, которые будут попадать под критерии поиска — в таком случае, они будут завершены все.
Подробная информация о процессе
Для каждого процесса создается каталог по пути /proc/ , в котором создаются папки и файлы с описанием процесса.
Примеры использования /proc/
Адрес в ячейках оперативной памяти, которые занял процесс:
Команда, которой был запущен процесс:
Символьная ссылка на рабочий каталог процесса:
Символьная ссылка на исполняемый файл, запустивший процесс:
Увидеть ссылки на дескрипторы открытых файлов, которые затрагивает процесс:
Подробное описание на сайте man7.org.
Потребление ресурсов процессами
Для просмотра статистики потребления ресурсов используем утилиту top:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21059 root 20 0 157884 2280 1496 R 18,8 0,1 0:00.03 top
1 root 20 0 190996 2964 1652 S 0,0 0,1 6:49.99 systemd
2 root 20 0 0 0 0 S 0,0 0,0 0:01.78 kthreadd
3 root 20 0 0 0 0 S 0,0 0,0 0:24.75 ksoftirqd/0
5 root 0 -20 0 0 0 S 0,0 0,0 0:00.00 kworker/0:0H
- PID — идентификатор процесса.
- USER — имя учетной записи, от которой запущен процесс.
- PR — приоритет процесса.
- NI — приоритет, выставленной командой nice.
- VIRT — объем виртуальной памяти, потребляемый процессом.
- RES — объем используемой оперативной памяти.
- SHR — количество разделяемой памяти, которое используется процессом.
- S — состояние процесса.
- %CPU — процент использования процессорного времени.
- %MEM — потребление оперативной памяти в процентах.
- TIME — использование процессорного времени в секундах.
- COMMAND — команда, которая запустила процесс.
Команды для управления процессами в Linux
В этой статье мы обсудим управление процессами. Процесс в Linux — это не что иное, как исполняемая программа. То есть это запущенный экземпляр программы. Любая команда, которую вы выполняете, запускает процесс.
Типы процессов
В Linux процессы могут быть двух типов:
- Процессы переднего плана — зависят от ввода пользователя. Они также называются интерактивными процессами.
- Фоновые процессы — работают независимо от пользователя. Называются неинтерактивными или автоматическими процессами.
Состояния процесса в Linux
Процесс в Linux после его создания и до завершения может проходить через разные состояния, а именно:
- Running (выполняется) — процесс в состоянии выполнения, то есть он запущен или готов к запуску.
- Sleeping (спящий) — процесс находится в спящем состоянии, пока ожидает доступного ресурса:
- Interruptible sleep (прерывистый сон) — процесс в состоянии прерывистого сна может просыпаться для обработки сигналов.
- Uninterruptible sleep (Непрерывный сон) — процесс не будет просыпаться для обработки сигналов.
Команды для управления процессами
В Linux доступны две команды для отслеживания запущенных процессов — Top и Ps.
1: Команда top
Для отслеживания запущенных процессов вы можете выполнить команду top:
Эта команда выводит список процессов, которые работают в реальном времени, а также сколько они занимают памяти и CPU. Давайте подробнее разберем ее вывод:
- PID: уникальный идентификатор процесса, присвоенный каждому процессу.
- User: имя владельца процесса.
- PR: приоритет, присвоенный процессу при планировании.
- NI: значение ‘nice’ процесса.
- VIRT: объем виртуальной памяти, которую занимает процесс.
- RES: объем физической памяти, используемой процессом.
- SHR: объем памяти, разделяемой с другими процессами.
- S: состояние процесса:
- “D” = непрерывный сон
- “R” = запущен
- “S” = спящий
- “T” = отслежен или остановлен
- “Z” = зомби
Перемещаться вверх и вниз по списку можно клавишами со стрелками вверх/вниз. Для выхода из команды top нажмите q. Чтобы завершить процесс, выделите его клавишами со стрелками и нажмите ‘k’.
В качестве альтернативы вы также можете выполнить команду kill, которую мы рассмотрим позже.
2: Команда ps
ps — это сокращение от “Process Status”. Она выводит запущенные в данный момент процессы. Но, в отличие от команды top, результат не генерируется в реальном времени.
Рассмотрим ее вывод подробнее:
- PID — идентификатор процесса.
- TTY — тип терминала.
- TIME — общее время работы процесса.
- CMD — имя команды, которая запускает процесс.
Для вывода дополнительной информации с помощью команды ps добавьте параметр -u:
На скриншоте вы можете увидеть следующие данные:
- %CPU — количество вычислительной мощности, которую занимает процесс.
- %MEM — объем памяти, занимаемой процессом.
- STAT — состояние процесса.
Хотя команда ps выводит только запущенные в данный момент процессы, с помощью нее можно посмотреть список всех процессов:
Эта команда выводит список даже тех процессов, которые в данный момент не запущены.
3: Остановка процесса
Чтобы остановить процесс в Linux, выполните команду “kill”. kill отправляет сигнал процессу.
Есть разные типы сигналов, которые можно отправлять. Однако самый частый — “kill -9”, который является “SIGKILL”.
Вы можете посмотреть все доступные сигналы с помощью следующей команды:
Сигнал по умолчанию — 15, то есть SIGTERM. Это означает, что если вы просто выполняете команду kill без номера, она отправляет сигнал SIGTERM.
Синтаксис для остановки процесса:
В качестве альтернативы вы также можете выполнить:
Эта команда отправит процессу сигнал “SIGKILL”. Ее следует выполнять в случае, если процесс игнорирует обычный запрос на остановку.
4: Изменение приоритета процесса
В Linux между процессами можно расставлять приоритеты. Значение приоритета для процесса называется ‘Niceness’, оно может варьироваться от -20 до 19. 0 — значение по умолчанию.
Четвертый столбец в выводе команды top — это столбец для значения niceness.
Чтобы запустить процесс и присвоить ему значение nice, которое отличается от значения по умолчанию, выполните команду:
$ nice -n [value] [process name]
Для изменения значения nice уже запущенного процесса выполните:
Заключение
В этом туториале мы рассмотрели в основном практические аспекты управления процессами в Linux. Теория управление процессами — это обширная тема, и ее полный разбор не входит в задачи данного мануала.
Читайте также: