在linux中终止进程 server01:/#ps-ax | grep java 警告:错误的ps语法,可能是假的“-”?看见http://procps.sf.net/faq.html 7342 pts/3 Z 0:00[爪哇] 7404分/3秒+0:00格雷普java server01:/#杀死7342 server01:/#ps-ax | grep java 警告:错误的ps语法,可能是假的“-”?看见http://procps.sf.net/faq.html 7342 pts/3 Z 0:00[爪哇] 7406分/3秒+0:00格雷普java 服务器01:/#
在上面的例子中,我使用ps命令来了解java进程的pid,在上面的例子中是7342 然后我用kill命令终止了这个进程。 但这并没有终止,因为ps命令再次显示了带有pid 7342的java进程 我应该使用其他命令终止进程吗?为什么kill不能终止进程 塔克斯 看看是否效果更好。您必须是root用户或进程所有者才能终止进程。试试看 ps aux 然后 kill-1 PID_编号 要让程序自行关闭,如果它没有回答,您可以强制它关闭 kill-9 PID_编号 请记住,使用-9强制程序将在不询问也不保存任何内容的情况下完成 检查:杀人在linux中终止进程 server01:/#ps-ax | grep java 警告:错误的ps语法,可能是假的“-”?看见http://procps.sf.net/faq.html 7342 pts/3 Z 0:00[爪哇] 7404分/3秒+0:00格雷普java server01:/#杀死7342 server01:/#ps-ax | grep java 警告:错误的ps语法,可能是假的“-”?看见http://procps.sf.net/faq.html 7342 pts/3 Z 0:00[爪哇] 7406分/3秒+0:00格雷普java 服务器01:/#,linux,Linux,在上面的例子中,我使用ps命令来了解java进程的pid,在上面的例子中是7342 然后我用kill命令终止了这个进程。 但这并没有终止,因为ps命令再次显示了带有pid 7342的java进程 我应该使用其他命令终止进程吗?为什么kill不能终止进程 塔克斯 看看是否效果更好。您必须是root用户或进程所有者才能终止进程。试试看 ps aux 然后 kill-1 PID_编号 要让程序自行关闭,如果它没有回答,您可以强制它关闭 kill-9 PID_编号 请记住,使用-9强制程序将在不询问也不
有关更多详细信息,kill-9可作为确保进程终止的最后手段。…Linux支持BSD样式的切换到
ps
命令(不带前导-…破折号/连字符)。如果提供hypen,那么GNU coreutils版本的ps
(主流Linux发行版上的标准版本)将尝试将交换机解释为与SysV兼容。这就是你的错误的来源
我建议使用开关的BSD形式,并查找-o
选项,以指定仅由匹配进程的PID组成的输出格式
你还试图杀死一个僵尸。正如你发现的那样,这是徒劳的努力。僵尸是进程中的占位符,它可以用于已死亡的进程。它将保留在进程表中,直到其父进程“获取”其退出代码。如果父进程从未执行wait()
系统调用,则条目将一直保留在那里,直到父进程被杀死,此时僵尸进程(以及任何其他孤立进程)将被init
进程继承。Linux(或任何其他形式的UNIX)下的正常init
会定期捕获所有死机进程(僵尸)
从概念上讲,UNIX/Linux系统上存在的每个进程都会作为“僵尸”花费少量时间。。。也就是说,从进程终止到其他进程读取其退出值(即使只是放弃它,如init
所做的那样)之间应该始终有一段时间
这个问题真的应该在ServerFault上解决进程被列为已失效。它的工作已经完成,并且保持不变,因为父进程仍然存在。但是,如果父进程崩溃或被kill-9杀死,则没有父进程,因此不存在的进程将一直保留到重新启动。 失效(或僵尸)进程只使用最少的资源,所以您可以保留它们
解决方案:要么杀死父进程,要么使用
kill-9
java进程已经变成了僵尸进程。您应该尝试通过kill
向父进程发送SIGCHLD
信号,告诉父进程获取僵尸子进程。如果失败,正如@Martin所提到的,您可以杀死父进程或kill-9
僵尸进程。kill-9$(pgrep-f关键字)
杀死通过“关键字”搜索的pid 问题不在于一般的编程,而在于系统。试试superuser.com记住kill-9应该是你最后的选择,因为它不会让你正在杀死的进程的子进程死亡。因此它们变成了僵尸进程。另外:通过运行
psauxf
您将看到父进程是什么。它要么被封锁了,要么没有注意到它的孩子。或者,如果你感到沮丧,kill-kill
Thanx为Knoldge。kill-9不起作用。您可以告诉命令查找父进程。
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:/#
kill $(pgrep [search pattern])