Используя BASH, как я могу убить TCP-порт 16969? - PullRequest
13 голосов
/ 22 марта 2012

У меня есть одно приложение, которое использует порт 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?

Ответы [ 4 ]

18 голосов
/ 22 марта 2012

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

пример:

tcpkill -i eth0 port 21
16 голосов
/ 22 марта 2012

Я думаю, что:

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, которые обычно убивают

14 голосов
/ 23 марта 2012

fuser -k 16969 / tcp

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

5 голосов
/ 22 марта 2012

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

Мое решение:

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

 sudo netstat -lnp | grep 8080  

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

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

Тогда используйте:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...