Using BASH how can i kill TCP port 16969?

2019-03-09 13:02发布

问题:

I have one application which use port TCP 16969. It requires sometimes a quick software kernel reboot on the fly. But if i launch it too fast, then i am locked with Exception in thread "main" java.net.BindException: Address already in use.

So without any excuse i want to trigger my BASH script which can kill any running or listening port with 16969. But how can i do that?

$ 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?

回答1:

I think that:

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

Should do the trick.

To double check what commands it wants to run before letting it loose add an echo before the kill like this:

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

It'll then list the PIDs that it would ordinarily kill



回答2:

Have you tried using tcpkill?

example:

tcpkill -i eth0 port 21


回答3:

fuser -k 16969/tcp

can free that port. This is a useful command that can be used to close ports. which ever it is. Regards



回答4:

I often get this problem using JBoss in Netbeans...

My solution :

In a terminal type :

 sudo netstat -lnp | grep 8080  

Then it display something like:

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

Then use:

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

Hope it will help!