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

13 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?
Run Code Online (Sandbox Code Playgroud)

Cha*_*aos 17

你尝试过使用tcpkill吗?

例:

tcpkill -i eth0 port 21
Run Code Online (Sandbox Code Playgroud)

  • 鉴于问题含糊不清,这似乎是一个合理的解决方案. (6认同)
  • `tcpkill`将终止网络流,但不会终止绑定到端口的进程 (3认同)
  • 当您希望流程继续进行时,这是完美的解决方案 (2认同)

Jam*_*s C 15

我觉得:

lsof -i tcp:22 | grep LISTEN | awk '{print $2}' | xargs kill
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.

要仔细检查它想要让它松添加之前运行什么命令echo之前,kill就像这样:

lsof -i tcp:22 | grep LISTEN | awk '{print $2}' | xargs echo kill
Run Code Online (Sandbox Code Playgroud)

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

  • @dmvianna`awk'/ LISTEN/{print $ 2}'`.`awk`可以做`grep`所能做的一切.这是多余的. (5认同)
  • `grep | awk`是多余的. (2认同)

Xan*_*der 14

fuser -k 16969/tcp

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

  • **请注意,这将终止附加到指定端口的进程!** (9认同)

ala*_*inm 5

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

我的解决方案

在终端类型中:

 sudo netstat -lnp | grep 8080  
Run Code Online (Sandbox Code Playgroud)

然后它显示如下:

 tcp6       0      0 :::8080       :::*        LISTEN      1722/java
Run Code Online (Sandbox Code Playgroud)

然后使用:

 kill 1722  //replace 1722 by the PID you found.
Run Code Online (Sandbox Code Playgroud)

希望它会有所帮助!

  • 这将杀死该进程:( (2认同)