我有一个使用端口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?
答案 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.
希望它会有所帮助!