Статус процесса (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
, +
уточняют состояние