Используя 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.
Надеюсь, это поможет!