Mám jednu aplikáciu, ktorá používa port TCP 16969. Vyžaduje si niekedy rýchle reštartovanie softvérového jadra za chodu. Ale ak to spustím príliš rýchlo, potom som uzamknutý Exception in thread "main" java.net.BindException: Address already in use
.
Takže bez akýchkoľvek výhovoriek chcem spustiť môj BASH skript, ktorý môže zabiť akýkoľvek bežiaci alebo počúvajúci port s 16969. Ale ako to môžem urobiť?
$ 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?
odpovede:
14 pre odpoveď č. 1Myslím si, že:
lsof -i tcp:22 | grep LISTEN | awk "{print $2}" | xargs kill
Mal by sa trik.
Ak chcete skontrolovať, aké príkazy chce spustiť, pred uvoľnením pridajte znak echo
pred kill
ako toto:
lsof -i tcp:22 | grep LISTEN | awk "{print $2}" | xargs echo kill
Potom uvedie zoznam PID, ktoré by bežne zabíjal
16 pre odpoveď č. 2
Skúsili ste použiť tcpkill?
príklad:
tcpkill -i eth0 port 21
12 pre odpoveď č. 3
fixačná jednotka -k 16969 / tcp
môže tento port uvoľniť. Toto je užitočný príkaz, ktorý sa dá použiť na zatvorenie portov. čokoľvek to je. S pozdravom
4 pre odpoveď č. 4
Tento problém často dostávam pomocou JBoss v Netbeans ...
Moje riešenie:
V type terminálu:
sudo netstat -lnp | grep 8080
Potom sa zobrazí niečo ako:
tcp6 0 0 :::8080 :::* LISTEN 1722/java
Potom použite:
kill 1722 //replace 1722 by the PID you found.
Dúfam, že to pomôže!