合 kill -9都杀不掉的进程如何处理
现象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | [root@starrocks1 log]# /usr/local/starrocks/be/bin/start_be.sh --daemon Backend running as process 4981. Stop it first. [root@starrocks1 log]# [root@starrocks1 log]# [root@starrocks1 log]# ps -ef|grep 4981 root 4981 4977 5 17:58 pts/3 00:00:13 [starrocks_be] <defunct> root 24527 7224 0 18:02 pts/3 00:00:00 grep --color=auto 4981 [root@starrocks1 log]# kill -9 4981 [root@starrocks1 log]# kill -9 4981 [root@starrocks1 log]# ps -ef|grep 4981 root 4981 4977 5 17:58 pts/3 00:00:13 [starrocks_be] <defunct> root 26359 7224 0 18:02 pts/3 00:00:00 grep --color=auto 4981 [root@starrocks1 log]# /usr/local/starrocks/be/bin/stop_be.sh ERROR: pid process may not be be. [root@starrocks1 log]# [root@starrocks1 log]# ps -ef|grep 4981 root 4981 4977 4 17:58 pts/3 00:00:13 [starrocks_be] <defunct> root 8149 7224 0 18:03 pts/3 00:00:00 grep --color=auto 4981 |
分析
Linux系统下经常需要用到杀进程的命令,但有时候kill -9 执行完之后,发现进程号还在,这时候需要如何解决。
kill -9 发送SIGKILL信号给进程,将其终止,但对于以下两种情况不适用:
(1)僵尸进程。此时该进程已经释放资源,但是没有被父进程释放。僵尸进程要等到父进程结束,或者重启系统才可以被释放。
(2)进程处于核心态,并且在等待不可获得的资源。会忽略所有信号,只能重启系统。kill只能杀死处于用户态的进程。
解决办法