2017-06-26 55 views
1

我運行Red Hat 6.8泊塢窗容器中,我有幾個Java進程運行。在具有相同操作系統的其他機器,我已經使用類似如下的命令,找到並殺死所有Java進程:xargs的殺不是聯手殺死特定的進程

ps -ef | grep 'java' | grep -v 'grep' | awk '{print $2}' | xargs kill -9 

然而,這臺機器上,它給了我下面的錯誤:

xargs: kill: No such file or directory 

脫下「| xargs的殺-9」不工作,並顯示了我我要殺死進程的PID,但由於某些原因,該命令將不會一起工作。

沒有人有任何想法,爲什麼?

+2

更好的是使用'pkill -f java ' – anubhava

+0

如果你只是輸入'kill someID'會怎麼樣?問題似乎是它不能執行'kill'命令。 – Barmar

+0

您的kill或xargs命令有問題。這個簡單的測試在我的Debian 9中工作正常:'ps -ef | awk'/ [g] eany/{print $ 2}'| xargs kill -9' PS:'grep'geany'| grep -v'grep''can寫成'grep'[g] eany''。 –

回答

1

眼前的問題是,xargs找不到kill命令。它需要在您的PATH,可能在/bin和/或/usr/bin。當您直接從shell運行kill命令時,您不會注意到它缺失,因爲大多數shell具有kill內置。

而且,我同意有關的總體思路其他用戶的評論。有更少的hacky方法可以做到這一點(killallpkill,任何不涉及grep的依靠運氣避免匹配`ps輸出的錯誤部分......)

+0

謝謝 - 問題是。由於某種原因,在這個Docker容器/ bin/kill中不存在,我從主機系統複製了它,並且事情工作正常。我使用這樣的命令的主要原因是它可以在所有我使用的Unix變種(Linux,AIX,HP-UX和Sun),並且我發現並非所有這些都支持「更容易」使用命令。 – Matt