Soluzione 1:
Hai eseguito netstat e lsof come root o con sudo? Nota l'ultima colonna:
netstat -ln --program
tcp 0 0 192.168.21.1:53 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
sudo netstat -ln --program
tcp 0 0 192.168.21.1:53 0.0.0.0:* LISTEN 2566/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 2566/named
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3125/sshd
Dalla manpage di netstat:
Avrai anche bisogno dei privilegi di superutente per vedere queste informazioni sui socket che non possiedi.
Come fai a sapere che non ce n'è uno in esecuzione? Se la porta è in uso, ha senso che esca immediatamente con un errore "socket in use". cosa succede quando ti colleghi alla porta tramite telnet?
telnet localhost 5666
Soluzione 2:
Le porte aperte dal kernel non verranno visualizzate con il nome del programma. Mi vengono in mente alcune cose relative a NFS e OCFS. Forse è qualcosa del genere?
Oppure potrebbe essere un bug del kernel. Controlla i log del kernel per OOPS e BUG.
Soluzione 3:
eseguire 'netstat --tcp --udp --listening --program' come utente root . altrimenti non darà PID/Program Name
quindi usa il comando kill -9 PID
Soluzione 4:
In realtà ho scritto un piccolo script di shell per aiutare a identificare queste domande occasionali:
#! /bin/bash
([ "$1" = "" ] || [ "$2" = "" ]) && echo "Usage: tracer <space> <port>" && exit 0
for i in `fuser -n $1 $2`
do
ps aux | grep $i | grep -v 'grep'
done
salva come /usr/local/bin/tracer; uscita:
[email protected]:/usr/flows# tracer tcp 80
80/tcp:
root 27904 0.0 0.0 111668 3292 ? Ss Aug04 0:03 /usr/sbin/apache2 -k start
www-data 32324 0.0 0.0 335332 3560 ? Sl Aug05 0:00 /usr/sbin/apache2 -k start
www-data 32327 0.0 0.0 335324 3560 ? Sl Aug05 0:00 /usr/sbin/apache2 -k start
Avrai bisogno dei privilegi di root per usarlo
Soluzione 5:
Sono stato in grado di rintracciare il processo ottenendo il suo inode tramite netstat e quindi utilizzando quell'inode con lsof. Vedi la mia risposta più dettagliata in https://serverfault.com/a/847910/94376.