kill -9 not work

kill -9不管用

Linux环境下很多时候需要杀死一个进程,一般kill -9 pid发送SIGKILL信号给该进程即可,该信号的默认行为就是终止进程,而且不可能捕获这个信号,
但是有些时候这个发了这个命令还是没有杀死进程,到底有哪些情况呢?

  1. 没有权限(这个很容易想到);
  2. init进程,root也杀不死;
  3. D状态的进程,这种状态的进程一般正在进行系统调用,如读磁盘IO,对于的内核的TASK_UNINTERRUPTIBLE状态;
  4. 僵尸进程, 在父进程调用waitpid()读取退出状态之前会一直存在,如果父进程忘记调用waitpid()会耗费系统资源。