我有一个运行 Red Hat 6.8 的 Docker 容器,并且有几个 Java 进程正在运行。在具有相同操作系统的其他机器上,我使用了类似于以下的命令来查找并终止所有 Java 进程:
ps -ef | grep 'java' | grep -v 'grep' | awk '{print $2}' | xargs kill -9
但是,在这台机器上,它给了我以下错误:
xargs: kill: No such file or directory
取消“| xargs kill -9”确实有效,并向我显示了我想杀死的进程的 PID,但由于某种原因,该命令将无法一起工作。
有谁知道为什么?
直接的问题是xargs
找不到kill
命令。它需要在你的PATH
,可能在/bin
和/或/usr/bin
。当您kill
直接从 shell运行命令时,您不会注意到它丢失了,因为大多数 shell 都有一个kill
内置命令。
另外,我同意其他用户对整体想法的评论。有更少的hacky方法来做到这一点(killall
,,pkill
任何不涉及grep
依靠运气来避免匹配`ps输出的错误部分......)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句