Используя BASH, как я могу убить TCP-порт 16969?

У меня есть одно приложение, использующее порт TCP 16969. Он требует иногда быстрой перезагрузки ядра программного обеспечения "на лету". Но если я запустил его слишком быстро, тогда я заблокирован с помощью Exception in thread "main" java.net.BindException: Address already in use.

Поэтому без каких-либо оправданий я хочу запустить мой BASH script, который может убить любой исполняемый или прослушивающий порт с 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?

Ответ 1

Я думаю, что:

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

Вы пытались использовать tcpkill?

Пример:

tcpkill -i eth0 port 21

Ответ 3

fuser -k 16969/tcp

может освободить этот порт. Это полезная команда, которая может использоваться для закрытия портов. который когда-либо есть. Отношения

Ответ 4

Я часто получаю эту проблему, используя JBoss в Netbeans...

Мое решение:

В терминальном типе:

 sudo netstat -lnp | grep 8080  

Затем отобразится что-то вроде:

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

Затем используйте:

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

Надеюсь, это поможет!