2024年7月17日更新:
有些僵尸进程无法直接kill,需要杀死其父进程才行。
查找僵尸进程父进程并杀死。
ps -ef | grep 9802(僵尸进程id)
kill -9 6700(父进程id)
但是有些僵尸进程杀死父进程后父进程id会变成1,这种情况就只能重启服务器解决了.
---------------------------------------
最近工作过程中,发现好几台服务器出现僵死进程. 使用命令找出僵死进程:
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'
命令注解:
ps -C java -o lstart,pid,cmd #不过貌似打印的不全
ps -A -o lstart,pid,args |grep java #这个可以的
因为状态为 z或者Z 的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程. 这里一共出现了9个僵死进程,需要把它们都干掉,执行命令:
kill -9 8310
这时再执行查找僵死的进程,发现所有僵死进程都没了.