在linux中杀死一个进程

sja*_*ain 7 linux

server01:/# ps -ax | grep java

Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html

 7342 pts/3    Z      0:00 [java] <defunct>

 7404 pts/3    S+     0:00 grep java


server01:/# kill 7342

server01:/# ps -ax | grep java

Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html

 7342 pts/3    Z      0:00 [java] <defunct>

 7406 pts/3    S+     0:00 grep java


server01:/# 
Run Code Online (Sandbox Code Playgroud)

在上面我使用ps命令来知道java进程的pid,在上面的例子中是7342.

然后我使用kill命令杀死了那个进程.但是这并没有被杀死,因为ps命令再次显示带有pid 7342的java进程.

我应该使用其他命令来杀死进程,为什么kill无法杀死进程

感谢名单

fre*_*crs 8

尝试

ps aux

然后

kill -1 PID_NUMBER

要求程序关闭自己,如果它没有回答你可以强迫它关闭

kill -9 PID_NUMBER

请记住,使用-9强制程序将最终确定而不会询问并且不保存任何检查:man kill以获取更多详细信息


Jim*_*nis 6

Linux支持BSD样式切换到ps命令(没有前导 - ...破折号/连字符).如果一个提供了hypen,那么GNU coreutils版本ps(主流Linux发行版的标准版本)将尝试将这些开关解释为SysV兼容.这是您的错误的来源.

我建议使用交换机的BSD形式,并查找-o选项以指定仅包含匹配进程的PID的输出格式.

你也试图杀死一个僵尸.正如你所发现的那样,这是徒劳的.僵尸是一个占位符,可以处理已经死亡的进程.它保留在进程表中,直到其父进程"获取"其退出代码.如果父wait()进程从不进行系统调用,那么该条目将一直保留在父进程被杀死之后,此时僵尸(以及任何其他孤立进程)将被init进程继承.initLinux(或任何其他形式的UNIX)下的正常情况会定期收回所有死进程(僵尸).

从概念上讲,在UNIX/Linux系统上退出的每个进程都会花费少量时间作为"僵尸"......在进程终止和其他进程读取其退出的时间之间应始终存在一段时间价值(即使只是丢弃它,也是init如此).

这个问题确实应该放在ServerFault上


enn*_*ler 5

kill -9可以作为确保进程死亡的最后手段。.....