在 Debian 系统上排查“进程异常”(进程卡死、CPU 占用高、内存泄漏、频繁重启、假死等),通常可以按下面这套思路逐步定位。
明确现象,有助于选择工具:
top
# 或
htop
重点看:
%CPU%MEMLOAD AVERAGESTATE(R / S / D)若是 D 状态(不可中断睡眠),通常是 IO 或磁盘问题。
free -h
关注:
availableswap 是否被大量使用iostat -x 1
或
iotop
若 %util 接近 100%,进程很可能在等磁盘。
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%mem | head
ps -o pid,stat,etime,cmd -p <PID>
常见状态:
R:运行中S:睡眠D:不可中断(IO)Z:僵尸进程strace -p <PID>
read/write/futex → 可判断阻塞点lsof -p <PID>
ss -antp | grep <PID>
top -H -p <PID>
或
ps -T -p <PID>
pmap -x <PID>
或
cat /proc/<PID>/status
关注:
VmRSSVmSizejournalctl -xe
dmesg | tail
关注:
systemctl status <service>
journalctl -u <service>
通常在:
/var/log/dmesg | grep -i "killed process"
systemctl show <service> | grep Restart
ulimit -c
coredumpctl list
perf top -p <PID>
gdb -p <PID>
bt
| 现象 | 可能原因 |
|---|---|
| CPU 高 | 死循环、计算密集 |
| 内存涨 | 内存泄漏 |
| D 状态 | 磁盘/网络 IO |
| Z 状态 | 父进程未回收 |
| 频繁重启 | OOM / 配置错误 |
| 无响应 | 死锁 / 外部依赖 |
如果你能给出 具体异常现象或进程名,我可以直接给你更针对性的排查命令。