Linux 进程“无响应”通常不是单一原因,而是卡在某种不可中断状态或资源死锁。下面按最常见 → 较少见的顺序,系统性地解释原因,并给出排查思路。
ps -eo pid,state,cmd | grep D
D (Uninterruptible Sleep)kill -9 也无效✅ 这是“假死”最常见原因
pstack <pid>
# 或
gdb -p <pid>
例如:
read()write()accept()futex()常见场景:
排查:
strace -p <pid>
查看:
dmesg | grep -i oom
free -h
表现:
排查:
top
htop
dmesg
journalctl -k
ps -eo pid,state,cmd | grep Z
ps -eo pid,state,cmd
| 状态 | 含义 |
|---|---|
| R | 运行中 |
| S | 可中断睡眠 |
| D | 不可中断(危险) |
| Z | 僵尸 |
| T | 被暂停 |
strace -p <pid>
dmesg
journalctl -xe
top
iostat -x 1
free -h
Linux 进程“无响应”90% 是:
卡在 D 状态、死锁、或被 I/O / 内存 / CPU 拖死。
如果你愿意,可以告诉我:
ps)我可以帮你精准判断是哪一类问题。