当Linux系统出现进程卡死或无响应时,可能表现为: - 进程占用CPU或内存过高但无实际工作 - 进程长时间不释放资源 - 进程不响应任何信号或命令 - 系统整体响应变慢
# 查看系统资源占用情况
top
htop
# 按CPU使用率排序
top -o %CPU
# 按内存使用率排序
top -o %MEM
# 查看进程树关系
pstree -p
# 先尝试正常终止
kill -15 <PID> # 发送SIGTERM信号
# 若无效,强制终止
kill -9 <PID> # 发送SIGKILL信号
# 终止同一进程组的所有进程
kill -- -<PGID>
# 终止特定用户的所有进程
pkill -u <username>
killall -u <username>
# 查看D状态进程
ps aux | awk '$8=="D" {print $0}'
# 解决方法通常是等待I/O完成或重启相关服务
systemctl restart <service-name>
# 识别僵尸进程(状态为Z)
ps aux | awk '$8=="Z" {print $0}'
# 僵尸进程通常需要父进程回收,可终止父进程
kill -9 <parent-PID>
# 查看系统日志
journalctl -xe
dmesg | tail
# 查看磁盘I/O状态
iotop
iostat -x 1
# 查看内存使用情况
free -h
vmstat 1
# 查看网络连接状态
ss -tulnp
netstat -tulnp
strace -p <PID> # 跟踪运行中的进程
strace -f <command> # 跟踪新启动的进程及其子进程
gdb -p <PID> # 附加到运行中的进程
bash
cgcreate -g cpu,memory:/mygroup
cgset -r cpu.shares=512 mygroup
cgexec -g cpu,memory:mygroup <command>通过以上方法,您应该能够有效诊断和解决Linux系统中的进程卡死和无响应问题。