使用BASH如何杀死TCP端口16969?

时间:2012-03-22 15:41:59

标签: linux bash ubuntu tcp

我有一个使用端口TCP 16969的应用程序。它有时需要快速重启软件内核。但是,如果我启动速度太快,那么我会被Exception in thread "main" java.net.BindException: Address already in use锁定。

所以没有任何借口我想触发我的BASH脚本,它可以用16969杀死任何正在运行或侦听的端口。但是我该怎么做?

$ lsof -w -n -i tcp:16969 # this gives me a list of 50 lines but how can i tell apply kill to all on this port?

4 个答案:

答案 0 :(得分:17)

您是否尝试过使用tcpkill?

示例:

tcpkill -i eth0 port 21

答案 1 :(得分:16)

我认为:

lsof -i tcp:22 | grep LISTEN | awk '{print $2}' | xargs kill

应该做的伎俩。

要在松散之前仔细检查要运行的命令,请在echo之前添加kill,如下所示:

lsof -i tcp:22 | grep LISTEN | awk '{print $2}' | xargs echo kill

然后它会列出它通常会杀死的PID

答案 2 :(得分:14)

fuser -k 16969 / tcp

可以释放该端口。这是一个有用的命令,可用于关闭端口。无论如何。 此致

答案 3 :(得分:5)

我经常在Netbeans中使用JBoss来解决这个问题...

我的解决方案:

在终端类型中:

 sudo netstat -lnp | grep 8080  

然后显示如下内容:

 tcp6       0      0 :::8080       :::*        LISTEN      1722/java

然后使用:

 kill 1722  //replace 1722 by the PID you found.

希望它会有所帮助!