Ci sono diversi modi per scoprire quale processo in esecuzione sta usando una porta.
Utilizzando fuser fornirà i PID delle istanze multiple associate alla porta di ascolto.
sudo apt-get install psmisc
sudo fuser 80/tcp
80/tcp:               1858  1867  1868  1869  1871
Dopo averlo scoperto, puoi interrompere o terminare il/i processo/i.
Puoi anche trovare i PID e altri dettagli usando lsof
sudo lsof -i tcp:80
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME  
nginx   1858     root    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1867 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1868 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1869 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1871 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
Limitare ai socket che ascoltano sulla porta 80 (al contrario dei client che si connettono alla porta 80):
sudo lsof -i tcp:80 -s tcp:listen
Per ucciderli automaticamente:
sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill
Ecco un oneliner che mostra il comando da eseguire :
echo kill $(sudo netstat -anp | awk '/ LISTEN / {if($4 ~ ":80$") { gsub("/.*","",$7); print $7; exit } }')
 Sostituisci echo di sudo affinché il processo venga effettivamente interrotto. 
 Tre opzioni per elencare le porte aperte sono offerte in whatisonport di jsh :
netstat -anp --numeric-ports | grep ":${PORT}\>.*:" 
fuser -v "${PORT}"/tcp
lsof -P -S 2 -i "tcp:${PORT}" | grep "\(:${PORT}->.*:\|:$PORT (LISTEN)$\)"
 Preferisco netstat perché è veloce, conciso e può elencare le porte aperte da altri utenti. (Anche se saranno comunque necessari i privilegi di superutente/utente per elencare i nomi e i PID di tali processi.)
Uscite
$ netstat -anp --numeric-ports | grep ":80\>.*:" 
tcp6       0      0 :::80           :::*            LISTEN      1914/apache2    
$ fuser -v "80/tcp"
                     USER        PID ACCESS COMMAND
80/tcp:              root       1914 F.... apache2
                     www-data  12418 F.... apache2
...
$ lsof -P -S 2 -i "tcp:80" | grep "\(:80->.*:\|:80 (LISTEN)$\)"
apache2  1914     root    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
apache2 12418 www-data    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
...
 L'uso di grep in due casi è abbinare solo la porta sul lato locale e saltare le connessioni aperte a una porta remota 80. (Un'alternativa sarebbe usare -l con netstat o con lsof per usare -sTCP:LISTEN , ma mi piacciono i grep sopra perché cattureranno anche in uscita connessioni da la porta specificata, che occasionalmente può essere interessante.)
 Con lsof usiamo -P per visualizzare :80 invece di :http per rendere possibile il grep. Il -S 2 l'opzione forza lsof da completare in modo tempestivo.
Uccidere il processo
 Supponendo di voler utilizzare netstat , potremmo prendere i PID in questo modo:
$ netstat -anp --numeric-ports | grep ":80\>.*:" | grep -o "[0-9]*/" | sed 's+/$++'
1914
...
 E potremmo persino passare quei PID a kill :
... | xargs -d '\n' kill -KILL
 Tuttavia c'è spesso un potenziale falso positivo quando si usano le espressioni regolari, quindi consiglierei di guardare solo l'output iniziale di netstat e poi decidere manualmente se eseguire o meno:
$ kill -KILL 1914
Vedi anche
 Ho un altro script chiamato listopenports che potrebbe essere di interesse.