Solución 1:
¿Ha ejecutado netstat y lsof como root o con sudo? Observe la última columna:
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
Desde la página de manual de netstat:
También necesitará privilegios de superusuario para ver esta información en sockets que no le pertenecen.
¿Cómo sabes que no hay uno funcionando? Si el puerto está en uso, tiene sentido que salga inmediatamente con un error de 'socket en uso'. ¿Qué pasa cuando haces telnet al puerto?
telnet localhost 5666
Solución 2:
Los puertos abiertos por el núcleo no se mostrarán con el nombre del programa. Me vienen a la mente algunas cosas de NFS y OCFS. ¿Tal vez sea algo así?
O podría ser un error del kernel. Verifique los registros del kernel para OOPS y BUG.
Solución 3:
ejecute 'netstat --tcp --udp --listening --program' como usuario raíz . de lo contrario, no le dará PID/Nombre del programa
luego use el comando kill -9 PID
Solución 4:
De hecho, escribí un pequeño script de shell para ayudar a identificar estas preguntas ocasionales:
#! /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
guardar como /usr/local/bin/tracer; salida:
[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
Necesitarás privilegios de root para usarlo
Solución 5:
Pude rastrear el proceso obteniendo su inodo a través de netstat y luego usándolo con lsof. Vea mi respuesta más detallada en https://serverfault.com/a/847910/94376.