我想杀死与tcsh shell中的进程相关的PID列表。我运行了以下命令:
> losf <file> | awk '{print($2)"'
该命令将显示PID列表。
PID1
PID2
...
然后我运行以下命令来杀死那些PID。
> kill -9 `lsof <file> | awk'{print($2)}'`
当执行kill
命令时,终端只是以某种方式挂起而没有杀死任何PID。然后我不得不一个接一个地杀死那些PID。
因此,有没有办法按照上面的说明做我打算做的事情?谢谢。
答案 0 :(得分:2)
xargs
是标准实用程序,用于对从标准输入读取的每个给定行执行操作。您可以像这样使用它:
> lsof <file> | awk 'print {$2}' | xargs -I '{}' kill {}
答案 1 :(得分:0)
也许你可以试试
for i in (lsof <file>); echo "pkill"$i
或者你也可以试试像
lsof <file> > pkill
虽然我没有任何可行的希望......
答案 2 :(得分:0)
我设法使用以下foreach方法解决了这个问题:
ViewPager
我不确定是否有更好的方法可以在不编写脚本的情况下执行此操作。
答案 3 :(得分:0)
您是否遇到过fuser
命令
选项-k将在命名文件/文件打开的情况下终止所有进程。
fuser -k -TERM /home/rolf/fs3/fs3.db /home/rolf/fs2.db
/home/rolf/fs3/fs3.db: 4026 4058
/home/rolf/fs2.db: 3996
默认发送KILL但您可以将其更改为TERM,例如使用-SIGNAL
选项