Статус процесса (process state) отражает текущее состояние выполнения процесса в операционной системе. Это важный индикатор для:
Просмотр статусов процессов (пример):
ps aux # Краткий формат
ps -eo pid,user,stat,cmd # Расширенный формат с статусами
R (running или runnable)R+ - foreground процесс (в терминальной группе)R - background процессS (interruptible sleep)D (uninterruptible sleep)top может показываться как D или D+T (stopped by job control signal)T - обычный stoppedT+ - остановленный foreground процессZ (zombie)Пример поиска зомби-процессов:
ps aux | grep 'Z'
X (dead)В расширенном выводе ps статус может содержать дополнительные символы:
| Символ | Значение |
|---|---|
< | Высокий приоритет (nice < 0) |
N | Низкий приоритет (nice > 0) |
L | Имеет заблокированные страницы в памяти |
s | Является лидером сессии |
l | Многопоточный процесс (использует CLONE_THREAD) |
+ | Находится в foreground-группе процессов |
Пример сложного статуса:
STAT
Ssl+ # Sleeping, session leader, multi-threaded, foreground
В top:
S показывает основной статусf, затем S для добавления колонки статусаВ htop:
F5 для tree-view с отображением зависимостейПолезные команды:
# Поиск процессов в D-состоянии (потенциальные проблемы)
ps aux | awk '$8 ``` /D/ { print $0 }'
# Подсчет процессов по статусам
ps -eo stat | sort | uniq -c
Для DevOps:
D → возможны проблемы с диском/NFSZ-процессы → проверять родительские процессыS при высокой нагрузке → возможен I/O bottleneckДля отладки:
strace -p PID для анализа системных вызововcat /proc/PID/status для детальной информацииРезюмируем:
<, N, s, l, + уточняют состояние