如何在单个bash脚本中找到进程并将其终止

时间:2012-04-08 08:53:18

标签: bash shell

目前我这样做是为了清除在端口

上运行的所有进程
lsof -i :10000

我得到了

COMMAND     PID         USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
Google    10427         user   60u  IPv4 0x162adea8      0t0  TCP localhost:52478->localhost:ndmp   (ESTABLISHED)
Google    10427         user  112u  IPv4 0x16289b98      0t0  TCP localhost:52483->localhost:ndmp (ESTABLISHED)

然后我杀了它

kill 10427

我正在寻找一种简化上述流程的方法。 我猜这个解决方案与管道输出并杀死它有关。 有点像(我想,在这里我假设1美元是10427)。

lsof -i :10000 | kill $1

我没有做太多的bash脚本,所以任何帮助都会很棒。

3 个答案:

答案 0 :(得分:4)

我想你想要像

这样的东西
fuser -k -n tcp 10000

lsof解决方案更像是

lsof -i :10000|tail -n +2|awk '{print $2}'|xargs -r kill

答案 1 :(得分:1)

我认为Michaels的答案是最好的,但仅供参考,你也可以这样做:

PID=`lsof -i :10000 | awk 'NR == 2 {print $2}'`
kill $PID

答案 2 :(得分:1)

或者使用它!

kill $(lsof -i :www | awk '{print $2}' | grep -v PID)