我正在使用以下命令通过 shell 脚本终止一个 java 进程:
pidof java|xargs Kill -9 $1
如果输出列表pidof
包含多个元素怎么办?我如何用同一个命令杀死它们?
答案1
首先,检查一下pkill
。您可以根据名称杀死任意数量的进程:
pkill java
您甚至可以使用带参数的完整命令作为搜索的一部分
pkill -f some_string_in_arguemnts
其次,您的构造xargs
对于多个 PID 来说效果很好,只要它们以空格或换行符分隔的数字通过管道输入即可。
答案2
killall
无论如何,该命令在大多数 Linux 上都可用。您可能必须在某些发行版上安装它。它允许您终止与命令行上提供的名称匹配的所有进程。
答案3
pgrep
可以给你 PID 列表
例如:
pgrep java
将为您提供与 java 相关的 PID 列表。所以你可以使用:
kill -9 `pgrep java`
答案4
我更喜欢
kill -9 `pidof java`
因为内联输出
> pgrep gulp
6316
6565
> pidof gulp
6565 6316
问题是pkill
,在某些系统(如 Ubuntu)上默认没有安装它