最近在学习spark时,遇到kill -9杀不掉进程的问题,在此做一记录以供学习。问题如图:
查找资料后,确定杀不掉进程的原因有两种:
- 这个进程是僵尸进程
- 此进程是"核心态"进程。
确定僵尸进程的方式:
1.用 ps 和 grep 命令查看僵尸进程,如图:
ps -A -ostat,ppid,pid,cmd | grep -e
命令注解: -A 参数列出所有进程 -o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数 因为状态为 z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程 运行结果参考如下:
2.用top命令查看进程,如图,zombie是僵尸进程:
解决办法:
1.使用 ps -A -ostat,ppid,pid,cmd | grep -e
命令,查看进程号以及父进程号
2.kill -9 父进程号 子进程号,如图:
也可以进入到 /proc/1544
目录下,执行cat status
,查看父进程号,如图:
最后kill -9两个进程号就可以了。