如何根据端口查找进程并将其全部删除?

时间:2011-02-18 16:23:17

标签: bash shell

根据端口号查找进程并将其全部删除。

ps -efl | grep PORT_NUMBER | kill -9 process_found_previously

如何完成最后一栏?

7 个答案:

答案 0 :(得分:107)

ps -efl | grep PORT_NUMBER的问题是PORT_NUMBER也可能与ps的输出中的其他列匹配(日期,时间,pid,...)。如果由root运行,则可能发生杀戮!

我会这样做:

PORT_NUMBER=1234
lsof -i tcp:${PORT_NUMBER} | awk 'NR!=1 {print $2}' | xargs kill 

命令细分

  • lsof -i tcp:${PORT_NUMBER}) - 列出正在侦听该tcp端口的所有进程
  • awk 'NR!=1 {print $2}') - 忽略第一行,打印每行的第二列
  • xargs kill) - 将结果作为参数传递给kill。可能有几个。

答案 1 :(得分:23)

1。)lsof -w -n -i tcp:8080

2。)kill -9 processId

答案 2 :(得分:18)

建议使用fuser命令:

fuser -k -TERM -n tcp ${PORT_NUMBER}

答案 3 :(得分:12)

kill $( lsof -i:6000 -t )

或者如果您需要权限:

sudo kill $( sudo lsof -i:6000 -t )

答案 4 :(得分:6)

  

sudo fuser -k 8080 / tcp

很容易记住。

此语法可能比问题日期更新近了!

答案 5 :(得分:3)

... | awk '{ print $4 }' | xargs kill -9

请在运行前用“echo”而不是“kill”进行测试

答案 6 :(得分:1)

要杀死在特定端口上侦听的所有进程,例如港口8864

kill -9 $ \`lsof -i:8864 -t\`

将8864替换为您想要的端口。