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

Что хранится в каталоге NPC в Linux?

2.0 Middle🔥 121 комментариев
#Linux

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

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

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

Каталог /proc в Linux: виртуальная файловая система процессов

Каталог /proc (от Proc Filesystem или Process Filesystem) — это специальная виртуальная файловая система в Linux, которая предоставляет интерфейс для доступа к информации о процессах, системных ресурсах и конфигурации ядра в реальном времени. Он не содержит реальных файлов на диске; его содержимое динамически генерируется ядром при каждом обращении.

Основное содержимое /proc

1. Информация о процессах (PID — Process ID)

Для каждого запущенного процесса существует подкаталог с именем, соответствующим его PID (например, /proc/1234 для процесса с PID 1234). Внутри находятся файлы и подкаталоги, детализирующие состояние процесса:

  • /proc/<PID>/status: Общая информация о процессе (состояние, PID, PPID, память).
  • /proc/<PID>/cmdline: Команда и аргументы, запустившие процесс.
  • /proc/<PID>/exe: Символьная ссылка на исполняемый файл процесса.
  • /proc/<PID>/fd/: Каталог с символьными ссылками на открытые файловые дескрипторы процесса.
  • /proc/<PID>/environ: Переменные окружения процесса.

Пример чтения информации о процессе:

cat /proc/1/status | grep "Name"
# Вывод: Name: systemd

2. Системная информация и параметры ядра

  • /proc/cpuinfo: Детальная информация о CPU (модель, количество ядер, частота).
  • /proc/meminfo: Статистика использования памяти (общая, свободная, кэш).
  • /proc/version: Версия ядра и информация о компиляции.
  • /proc/filesystems: Список файловых систем, поддерживаемых ядром.
  • /proc/mounts: Информация о текущих mount точках (аналогично mount команде).
  • /proc/net/: Сеть — статистика и конфигурация сетевых интерфейсов, соединений.

3. Управление и конфигурация ядра через /proc/sys

Каталог /proc/sys — это интерфейс к sysctl, позволяющий просматривать и изменять параметры ядра в runtime. Изменения здесь часто эквивалентны команде sysctl.

  • /proc/sys/net/: Параметры сетевой подсистемы (например, ipv4/tcp_keepalive_time).
  • /proc/sys/kernel/: Общие параметры ядра (например, hostname, pid_max).
  • /proc/sys/vm/: Параметры управления виртуальной памятью (например, swappiness).

Пример изменения параметра:

# Просмотр текущего значения
cat /proc/sys/net/ipv4/tcp_keepalive_time
# Изменение значения (требуются права)
echo 300 > /proc/sys/net/ipv4/tcp_keepalive_time

4. Информация о устройствах и системе

  • /proc/devices: Список зарегистрированных устройств (character и block).
  • /proc/interrupts: Статистика по обработке прерываний (IRQ) для каждого CPU.
  • /proc/ioports: Зарегистрированные порты I/O.
  • /proc/kmsg: Лог сообщений ядра (обычно читается через dmesg).

Практическое применение для QA Automation

Знание /proc полезно для автоматизации тестов, связанных с:

  • Мониторинг ресурсов (память, CPU процессов) в нагрузочных тестах.
  • Диагностики проблем (например, проверка открытых файлов процесса при тестировании файловых операций).
  • Сбора системной информации для отчетов о тестовом окружении.
  • Настройки параметров ядра для специализированных тестов (например, сетевых).

Пример скрипта Python для получения информации о памяти процесса:

import os

def get_process_meminfo(pid):
    try:
        with open(f'/proc/{pid}/status', 'r') as f:
            for line in f:
                if line.startswith('VmRSS:'):
                    # VmRSS - резидентная память (физически используемая)
                    return line.strip()
    except FileNotFoundError:
        return "Process not found"

print(get_process_meminfo(1))

Заключение

Каталог /proc — это мощный инструмент для инспекции "живой" системы Linux, предоставляющий программный интерфейс к данным ядра. Для QA Automation Engineer понимание его структуры позволяет создавать более глубокие и надежные тесты, проверяющие не только функциональность приложения, но и его влияние на системные ресурсы и поведение в реальном времени. Это особенно важно при тестировании серверных приложений, высоконагруженных систем и для диагностики сложных проблем в автоматизированных тестовых сценариях.