我想在tcshshell中删除与进程相关的PID列表。我运行了以下命令:
> losf <file> | awk '{print($2)"'
该命令将显示PID列表。
pid1基因
pid2基因
...
然后,我运行以下命令来删除这些PID。
> kill -9 `lsof <file> | awk'{print($2)}'`
当kill
命令执行时,终端只是不知何故挂起,没有杀死任何PID。然后我不得不恢复到一个接一个地杀死这些PID。
因此,有没有一种方法可以做到我打算做的如上所述?谢谢。
4条答案
按热度按时间yzxexxkh1#
xargs
是一个标准实用程序,用于对从标准输入读取的每一行执行操作。6kkfgxo02#
也许你可以试试
for i in (lsof <file>); echo "pkill"$i
,或者你也可以试试像lsof <file> > pkill
这样的东西,尽管我不抱任何希望。2izufjch3#
我设法使用以下foreach方法解决了这个问题:
我不确定是否有更好的方法来实现这一点,而不需要为这种用法编写脚本。
wnavrhmk4#
您是否遇到过
fuser
命令。选项-k将终止打开指定文件的所有进程。
默认情况下发送KILL,但您可以将其更改为TERM,例如使用
-SIGNAL
选项