xargs和kill不能一起杀死特定的进程

时间:2017-06-26 20:31:39

标签: bash shell unix grep

我有一个运行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但由于某种原因,该命令将无法一起工作。

有没有人有任何想法?

2 个答案:

答案 0 :(得分:2)

当前的问题是xargs无法找到kill命令。它需要位于PATH,可能位于/bin和/或/usr/bin。当你直接从shell运行kill命令时,你不会注意到它丢失了,因为大多数shell都内置了kill

此外,我同意其他用户对整体构思的评论。执行此操作的方法较少(killallpkill,任何不依赖于运气的grep以避免匹配错误的部分`ps输出......)

答案 1 :(得分:0)

这是Google在此特定问题上的最高结果,即使不是唯一的问题,所以我只想在两年后在这里加以说明:kill捆绑在util-linux包中(在RHEL中)或procps软件包(在Debian中)以及其他实用程序。在容器中安装该软件包即可解决问题。