我有一个运行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但由于某种原因,该命令将无法一起工作。
有没有人有任何想法?
答案 0 :(得分:2)
当前的问题是xargs
无法找到kill
命令。它需要位于PATH
,可能位于/bin
和/或/usr/bin
。当你直接从shell运行kill
命令时,你不会注意到它丢失了,因为大多数shell都内置了kill
。
此外,我同意其他用户对整体构思的评论。执行此操作的方法较少(killall
,pkill
,任何不依赖于运气的grep
以避免匹配错误的部分`ps输出......)
答案 1 :(得分:0)
这是Google在此特定问题上的最高结果,即使不是唯一的问题,所以我只想在两年后在这里加以说明:kill
捆绑在util-linux
包中(在RHEL中)或procps
软件包(在Debian中)以及其他实用程序。在容器中安装该软件包即可解决问题。