我有一个使用端口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)
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
我经常在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)
希望它会有所帮助!
| 归档时间: |
|
| 查看次数: |
58518 次 |
| 最近记录: |