Linux 如何在Bash中终止TCP端口16969?

Linux 如何在Bash中终止TCP端口16969?,linux,bash,ubuntu,tcp,Linux,Bash,Ubuntu,Tcp,我有一个使用TCP端口16969的应用程序。有时需要在运行中快速重启软件内核。但是如果我启动得太快,我会被锁定 线程“main”java.net.BindException中的异常:地址已在使用中 所以我想触发我的Bash脚本,它可以用16969杀死任何正在运行或正在侦听的端口,但是我怎么做呢 $ lsof -w -n -i tcp:16969 # this gives me a list of 50 lines but how can I kill them all? 你试过使用tcpkil

我有一个使用TCP端口16969的应用程序。有时需要在运行中快速重启软件内核。但是如果我启动得太快,我会被锁定

线程“main”java.net.BindException中的异常:地址已在使用中

所以我想触发我的Bash脚本,它可以用16969杀死任何正在运行或正在侦听的端口,但是我怎么做呢

$ lsof -w -n -i tcp:16969 # this gives me a list of 50 lines but how can I kill them all?

你试过使用tcpkill吗

例如:

tcpkill -i eth0 port 21

我经常在Netbeans中使用JBoss时遇到这个问题

我的解决方案: 在终端类型中:

 sudo netstat -lnp | grep 8080  
然后它会显示如下内容:

 tcp6       0      0 :::8080       :::*        LISTEN      1722/java
然后使用:

 kill 1722  //replace 1722 by the PID you found.
希望这会有帮助

我认为:

lsof -i tcp:22 | grep LISTEN | awk '{print $2}' | xargs kill
我们应该做到这一点

要在释放之前仔细检查它想要运行的命令,请在
kill
之前添加一个
echo
,如下所示:

lsof -i tcp:22 | grep LISTEN | awk '{print $2}' | xargs echo kill
然后它会列出它通常会杀死的PID

fuser -k 16969/tcp 

我可以释放那个端口。这是一个有用的命令,可用于关闭端口(无论是哪种端口)。

tcpkill
将终止网络流,但不会终止绑定到端口的进程。考虑到问题的模糊性,这似乎是一个合理的解决方案。它优于终止进程。当有太多的请求时,我不想杀死我的Web服务器。当您希望进程保持稳定时,这是一个完美的解决方案going@jordanm不,不是。如果没有
grep LISTEN
,您也将试图杀死列标题,即PID@dmvianna
awk'/LISTEN/{print$2}'
awk
可以做grep所能做的一切。它是冗余的。请注意,这将终止连接到指定端口的进程!fuser杀死进程,杀死Socket没有最好的方法这是centos中的解决方案。