Unix:如何根据 lsof 命令杀死进程列表(PID)?

use*_*168 1 unix kill lsof

我想杀死与 tcsh shell 中的进程相关的 PID 列表。我运行了以下命令:

> losf <file> | awk '{print($2)"'
Run Code Online (Sandbox Code Playgroud)

该命令将显示 PID 列表。

PID1

PID2

...

然后我运行以下命令来杀死这些 PID。

> kill -9 `lsof <file> | awk'{print($2)}'`
Run Code Online (Sandbox Code Playgroud)

当执行该kill命令时,终端只是以某种方式挂起,而没有杀死任何 PID。然后我不得不恢复一一杀死那些 PID。

因此,有没有一种方法可以实现我想要做的事情,如上所示?谢谢。

小智 5

xargs是一个标准实用程序,用于对从标准输入读取的每个给定行执行操作。你可以这样使用它:

> lsof <file> | awk '{print($2)}' | xargs -I '{}' kill {}
Run Code Online (Sandbox Code Playgroud)

  • 感谢您提供这个解决方案,这个衬里对我有用,这就是我一直在寻找的东西。我编辑了您对以下内容的答案,因为原始答案有语法错误。`原始:awk 'print {$2}'` `编辑:awk '{print($2)}'` (2认同)