Apri porte
Quando si esegue molta programmazione socket, capita spesso che un programma server, quando viene ricompilato/rieseguito, non riesce a collegarsi a un numero di porta particolare perché quel numero di porta è già in uso.
Per chiudere manualmente il numero di porta è necessario prima scoprire il nome/id del processo che tiene aperta la porta e quindi utilizzare il comando kill su quel processo.
ldi
$ lsof -i :8888 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 8461 enlightened 11u IPv6 138527 0t0 UDP *:8888
Nell'esempio sopra si vede che la porta 8888 è tenuta in uso dal comando java con pid 8461.
Ora terminare il processo eseguendo una delle seguenti operazioni
$ kill 8461 $ killall -9 8461 $ killall -9 java
netstat
Il comando netstat può essere utilizzato anche per scoprire quale processo contiene un determinato numero di porta
$ netstat -u -ap (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name udp 0 0 *:18347 *:* - udp 0 0 localhost:11211 *:* - udp 0 0 localhost:36254 localhost:36254 ESTABLISHED - udp 0 0 localhost:domain *:* - udp 0 0 *:ipp *:* - udp 0 0 *:42038 *:* - udp 0 0 *:17500 *:* 4090/dropbox udp 0 0 *:mdns *:* - udp 0 0 localhost:58797 localhost:7777 ESTABLISHED 9831/ncat udp 0 0 localhost:42724 localhost:domain ESTABLISHED - udp6 0 0 [::]:46282 [::]:* - udp6 0 0 [::]:mdns [::]:* - udp6 0 0 [::]:9999 [::]:* 11598/java
La porta che vogliamo chiudere qui è 9999. E netstat mostra che il pid =11598 e il nome del comando =java
Qui abbiamo usato -u per la porta udp. Se è una porta TCP, lo switch u non è necessario.
$ sudo netstat -ap | grep :9050 tcp 0 0 localhost:9050 *:* LISTEN 1613/tor
Una volta trovato l'id/nome del processo, terminalo con il comando kill.
$ kill 11598
fusore
Il comando fusore può essere utilizzato anche per scoprire il pid del programma. La sintassi è
fuser -k -n protocol portno
Esempio veloce
$ fuser -k -n udp 7777 7777/udp: 11774