将 PID 通过管道传递到kill 中不起作用

将 PID 通过管道传递到kill 中不起作用

我正在对抗 IntelliJ 中的一个错误,当更新 SNAPSHOT 依赖项时,钉枪实例会出错。我想要自动杀死名称中包含nailgun 的所有进程

到目前为止,我可以获得所有相关的 PID,如下所示:

ps -x -o pid,cmd | grep nailgun | cut -f 1 -d ' '

例如,这给了我:

26759
27852
28817
29963
31234
31577

我可以手动运行kill它们,例如kill 26759等等。但是管道不起作用:

ps -x -o pid,cmd | grep nailgun | cut -f 1 -d ' ' | kill

这只是打印

杀死:用法:杀死[-s sigspec | -n 符号| -sigspec] pid | jobspec ...或kill -l [sigspec]

如何通过管道传递要杀死的 PID 列表?

答案1

将 PID 放在一行上即可xargs

ps -x -o pid,cmd | grep nailgun | cut -f 1 -d ' ' | xargs kill

唯一的烦恼是,这会打印列表中也显示的实例kill: (xyz): No such processgrepps

另一种选择:

pgrep -f nailgun | xargs kill

相关内容