平常我们在用 top 命令来检视站群服务器的状态十分正常的时候,用下面的命令找出僵死程序
ps -A -o stat,ppid,pid,cmd | grep -e ‘^[Zz]’
命令注解:
-A 引数列出所有程序
-o 自定义输出栏位 我们设定显示栏位为 stat(状态), ppid(程序父 id), pid(程序 id),cmd(命令)这四个引数
-C 用来指定所执行的命令名称,你这里也就是让 ps 仅仅显示 php 命令所产生的程序的资讯
ps -C java -o lstart,pid,cmd【不过貌似列印的不全~】
ps -A -o lstart,pid,args |grep java【这个可以的~】

因为状态为 z 或者 Z 的程序为僵尸程序,所以我们使用 grep 抓取 stat 状态为 zZ 程序
执行结果参考如下这里一共出现了 9 个僵死程序,我们需要把它们都干掉,执行下面的命令
kill -9 8310
这时你再执行查询僵死的程序,发现所有僵死程序都没了.
补充:
最近又遇到了个问题,一台站群服务器上产生了 100 多少僵死程序,而且每一僵死程序的父程序都不一样,如果用上面的方法,一条一条的杀,那还不得累死我啊。
那么就应该想一条简单的命令,直接查询僵死程序,然后将父程序杀死~
ps -A -o stat,ppid,pid,cmd | grep -e ‘^[Zz]’ | awk ‘{print $2}’ | xargs kill -9