Tengo un proceso que escucha 2 puertos:45136/tcp y 37208/udp (en realidad, supongo que es el mismo proceso). Pero netstat no devuelve ningún pid:
netstat -antlp | grep 45136
tcp 0 0 0.0.0.0:45136 0.0.0.0:* LISTEN -
Mismo resultado con "grep 37208".
Probé lsof también:
lsof -i TCP:45136
Pero no devuelve nada.
Es una nueva instalación de squeeze y realmente no sé qué puede ser este proceso. ¿Alguna idea?
RESPUESTA
Gracias a sus comentarios descubrí de qué se trataba. Desinstalé nfs-server nfs-common (después de una búsqueda dkpg –get-selections | grep nfs) y el proceso desconocido desapareció.
Es extraño que los procesos del núcleo no estén marcados de ninguna manera.
Gracias de nuevo a los dos. 😉
Respuesta aceptada:
netstat
Hay un proceso allí, su ID de usuario simplemente no está al tanto de ver qué es. Esta es una capa de protección proporcionada por lsof
eso te impide ver esto. Simplemente vuelva a ejecutar el comando pero prefijelo usando el sudo
comando en su lugar.
$ sudo netstat -antlp | grep 45136
Incluso hay una advertencia sobre esto en la salida de lsof
en la parte superior.
(No se pudieron identificar todos los procesos, no se mostrará la información de los procesos que no son de propiedad, tendría que ser root para verlo todo).
Ejemplo
$ netstat -antlp | grep 0:111
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN -
$ sudo netstat -antlp | grep 0:111
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1248/rpcbind
ss
Si no tienes suerte con netstat
quizás ss
servirá. Aún necesitarás usar sudo
y la salida puede ser un poco más críptica.
Ejemplo
$ ss -apn|grep :111
LISTEN 0 128 :::111 :::*
LISTEN 0 128 *:111 *:*
$ sudo ss -apn|grep :111
LISTEN 0 128 :::111 :::* users:(("rpcbind",1248,11))
LISTEN 0 128 *:111 *:* users:(("rpcbind",1248,8))
¿Todavía no aparece el ID del proceso?
Hay casos en los que simplemente no hay un PID asociado al puerto TCP en uso. Puede leer sobre NFS, en la respuesta de @derobert, que es uno de ellos. Hay otros. Tengo instancias en las que uso túneles ssh para volver a conectarme a servicios como IMAP. Estos también aparecen sin un ID de proceso.
En cualquier caso, puede usar una forma más detallada de netstat
lo que podría arrojar luz adicional sobre qué proceso está utilizando finalmente un puerto TCP.
$ netstat --program --numeric-hosts --numeric-ports --extend
Ejemplo
$ netstat --program --numeric-hosts --numeric-ports --extend |grep -- '-' | head -10
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 192.168.1.103:936 192.168.1.3:60526 ESTABLISHED root 160024310 -
tcp 0 0 192.168.1.1:2049 192.168.1.3:841 ESTABLISHED sam 159941218 -
tcp 0 0 127.0.0.1:143 127.0.0.1:57443 ESTABLISHED dovecot 152567794 13093/imap-login
tcp 0 0 192.168.1.103:739 192.168.1.3:2049 ESTABLISHED root 160023970 -
tcp 0 0 192.168.1.103:34013 192.168.1.3:111 TIME_WAIT root 0 -
tcp 0 0 127.0.0.1:46110 127.0.0.1:783 TIME_WAIT root 0 -
tcp 0 0 192.168.1.102:54891 107.14.166.17:110 TIME_WAIT root 0 -
tcp 0 0 127.0.0.1:25 127.0.0.1:36565 TIME_WAIT root 0 -
tcp 0 0 192.168.1.1:2049 192.168.1.6:798 ESTABLISHED tammy 152555007 -
Si nota que la salida incluye INODES, podemos retroceder en el proceso usando esta información.
$ find -inum 152555007
Lo que le mostrará un archivo que podría llevarlo a un proceso.
Relacionado:¿Monitoreo de procesos en entorno Linux?Referencias
- Puerto a PID