Когда
top и htop уже не дают ответов, вся реальная картина состояния процесса находится в /proc. Аргументы запуска процесса (
argv):cat /proc/PID/cmdline | tr '\0' ' '
Показывает текущие аргументы процесса. Полезно для диагностики, но
argv может быть изменён самим процессом и не всегда отражает исходную команду запуска.Пример вывода:
/usr/bin/python3 worker.py --queue=emails --env=prod
Память процесса:
cat /proc/PID/status | grep -E 'VmRSS|VmSize|VmSwap'
VmRSS — реально занятая RAM
VmSize — виртуальное адресное пространство процесса
VmSwap — объём, вытесненный в swap
Пример:
VmRSS: 412384 kB
VmSwap: 65536 kB
Детальная карта памяти процесса:
cat /proc/PID/smaps
Позволяет понять, где именно расходуется память:
private, shared, file-backed. На больших процессах может быть тяжёлым.Открытые файлы и сокеты процесса:
ls -l /proc/PID/fd
Здесь видны логи, сокеты,
pipes и удалённые файлы, которые всё ещё удерживаются процессом (доступ зависит от прав).Количество потоков внутри процесса:
ls /proc/PID/task | wc -l
Рост значения без явной нагрузки может указывать на проблемы с управлением потоками, но не всегда означает утечку.
Реальный исполняемый файл процесса:
readlink /proc/PID/exe
Права и
capabilities процесса:cat /proc/PID/status | grep Cap
🔥 Короткая практическая выжимка для анализа процессов на уровне procfs/ядра.
➡️ DevOps Ready | #практика