← Назад к вопросам

Где хранится информация о запущенных процессах?

1.0 Junior🔥 191 комментариев
#Linux и администрирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Информация о запущенных процессах в Linux

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

Структура каталога /proc

Каталог /proc содержит:

  • Цифровые подкаталоги (например, /proc/1234) для каждого запущенного процесса, где номер соответствует PID (Process ID)
  • Системные файлы (например, /proc/cpuinfo, /proc/meminfo) с информацией об оборудовании и состоянии системы

Ключевые файлы внутри /proc/[PID]

Для каждого процесса в соответствующем каталоге находятся следующие важные файлы:

/proc/[PID]/status       # Основная информация о процессе
/proc/[PID]/cmdline      # Командная строка запуска процесса
/proc/[PID]/exe          # Символическая ссылка на исполняемый файл
/proc/[PID]/cwd          # Символическая ссылка на текущую рабочую директорию
/proc/[PID]/environ      # Переменные окружения процесса
/proc/[PID]/fd/          # Каталог с файловыми дескрипторами
/proc/[PID]/stat         # Детальная статистика процесса
/proc/[PID]/statm        # Информация об использовании памяти
/proc/[PID]/maps         # Отображения памяти процесса
/proc/[PID]/io           # Статистика ввода/вывода

Примеры получения информации

Просмотр процессов через командную строку:

# Просмотр всех процессов (классический способ)
ps aux

# Дерево процессов
pstree -p

# Интерактивный мониторинг процессов
top
htop

# Просмотр конкретного процесса по PID
cat /proc/1234/status

# Получение командной строки процесса
cat /proc/1234/cmdline | tr '\0' ' '

Пример содержимого /proc/[PID]/status:

Name:   systemd
Umask:  0000
State:  S (sleeping)
Tgid:   1
Ngid:   0
Pid:    1
PPid:   0
TracerPid:      0
Uid:    0       0       0       0
Gid:    0       0       0       0

Альтернативные источники информации

Помиком /proc, информация о процессах также доступна через:

  1. Системные вызовы (ps, top, htop используют их)
  2. Утилиты /usr/bin/:
    • ps - отображает список процессов
    • top/htop - интерактивные мониторы процессов
    • pidof - поиск PID по имени процесса
    • pgrep/pkill - поиск/сигнализация процессов по критериям
  3. Специализированные файловые системы:
    • /sys (sysfs) - информация об устройствах и драйверах
    • /dev - файлы устройств

Практическое применение в DevOps

Понимание расположения информации о процессах критически важно для:

  • Мониторинга - сбор метрик потребления ресурсов
  • Отладки - анализ проблем с приложениями
  • Автоматизации - написание скриптов для управления процессами
  • Безопасности - аудит запущенных процессов и их окружения

Пример скрипта для мониторинга потребления памяти процессами:

#!/bin/bash
for pid in $(ls -d /proc/[0-9]* | cut -d/ -f3); do
  if [ -f /proc/$pid/status ]; then
    name=$(grep "Name:" /proc/$pid/status | awk '{print $2}')
    mem=$(grep "VmRSS:" /proc/$pid/status | awk '{print $2}')
    echo "PID: $pid, Name: $name, Memory: ${mem}KB"
  fi
done

Таким образом, /proc является основным источником детальной информации о процессах в Linux, предоставляя богатый API для получения данных в реальном времени, что делает его незаменимым инструментом для администраторов и DevOps-инженеров.