Какая информация хранится о запущенных процессах?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Информация о запущенных процессах в Linux/Unix-системах
В Linux и Unix-подобных системах информация о запущенных процессах хранится в виртуальной файловой системе /proc (procfs). Каждый запущенный процесс получает свою собственную директорию с именем, соответствующим его PID (Process ID). Например, процесс с PID 12345 будет представлен директорией /proc/12345. Эта директория содержит множество файлов и поддиректорий с детализированной информацией о состоянии процесса.
Ключевые файлы и их содержимое в /proc/[PID]/
/proc/[PID]/status: Сводная информация в удобочитаемом формате.
* Имя процесса (`Name`), состояние (`State`), PID, PPID (Parent PID), UID/GID реальные и эффективные, использование памяти (`VmSize`, `VmRSS`, `VmData`, `VmStk`).
```bash
# Пример просмотра статуса процесса
cat /proc/self/status | head -20
```
/proc/[PID]/statи/proc/[PID]/statm: Статистика в машинно-читаемом формате.
* `stat`: 52 поля с информацией о состоянии, приоритете, использовании CPU и т.д.
* `statm`: Использование памяти в страницах (размер, резидентный набор, разделяемые страницы и др.).
```bash
# Просмотр статистики текущего процесса (cat - это процесс)
cat /proc/self/stat
```
-
/proc/[PID]/cmdline: Полная командная строка запуска процесса (аргументы разделены нулевыми символами\0).# Для корректного отображения командной строки tr '\0' ' ' < /proc/self/cmdline; echo -
/proc/[PID]/exe: Символическая ссылка на исполняемый файл процесса.# Узнать путь к исполняемому файлу readlink /proc/self/exe -
/proc/[PID]/cwd: Символическая ссылка на текущую рабочую директорию процесса. -
/proc/[PID]/fd/: Директория, содержащая символические ссылки на файловые дескрипторы, открытые процессом.# Посмотреть открытые файлы процессом с PID 12345 ls -la /proc/12345/fd/ -
/proc/[PID]/environ: Переменные окружения процесса.# Просмотр окружения (также разделены нулевыми символами) tr '\0' '\n' < /proc/self/environ -
/proc/[PID]/io: Статистика ввода-вывода (прочитано/записано байт). -
/proc/[PID]/limits: Текущие лимиты ресурсов (ulimit). -
/proc/[PID]/mapsи/proc/[PID]/smaps: Карта памяти процесса.
* `maps`: Отображения виртуальной памяти (библиотеки, heap, stack и т.д.).
* `smaps`: Детальная статистика по каждому отображению (размер резидентного набора, приватные/разделяемые страницы).
Системные утилиты для работы с процессами
Хотя информация извлекается из /proc, на практике чаще используют утилиты-обёртки, которые парсят эти данные и представляют их в удобном виде:
-
ps(Process Status): Базовая утилита для вывода списка процессов с различными форматами.# Показать все процессы в формате лес (иерархия) ps auxf # Показать процессы с детальной информацией о потоках (LWP) ps -eLf -
top/htop(интерактивные мониторы): Динамически обновляемый вывод, сортировка по CPU, памяти и другим параметрам.htop— более продвинутая и удобная версия. -
pgrep/pkill: Поиск и отправка сигналов процессам по имени или другим атрибутам.# Найти PID всех процессов с именем "nginx" pgrep -f nginx -
pidstat(из пакета sysstat): Расширенная статистика по процессам (CPU, память, I/O, контекстные переключения).# Мониторинг использования CPU всеми процессами каждые 2 секунды pidstat -u 2 # Мониторинг использования памяти pidstat -r 2 -
/procсодержит также системную информацию (не привязанную к PID):
* **`/proc/cpuinfo`** — информация о процессоре.
* **`/proc/meminfo`** — детальная статистика по памяти системы.
* **`/proc/loadavg`** — средняя загрузка системы.
* **`/proc/net/`** — сетевая статистика.
* **`/proc/sys/`** — настройки ядра (параметры, доступные для изменения через `sysctl`).
Практическое значение для DevOps/SRE
Для инженера по надежности и разработке понимание этой информации критически важно для:
- Диагностики проблем (утечки памяти, высокое использование CPU, блокировки на I/O).
- Мониторинга и алертинга — сбор метрик из
/procили с помощью утилит (например, черезnode_exporterдля Prometheus). - Анализа производительности — понимание, какие ресурсы потребляет конкретное приложение.
- Контейнеризации — контроль групп (cgroups), которые также представлены в
/proc/[PID]/cgroup, и изоляция ресурсов основывается на этой информации.
Таким образом, /proc является единым и исчерпывающим источником истины о состоянии процессов и системы в режиме реального времени, а стандартные утилиты (ps, top) — это лишь интерфейсы для удобной работы с этими данными.