GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo identificar un proceso que no tiene Pid?

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

Linux
  1. ¿Cómo determinar qué proceso está creando un archivo?

  2. ¿Cómo eliminar un archivo cuyo nombre de archivo tiene caracteres no imprimibles?

  3. ¿Qué proceso tiene Pid 0?

  4. ¿Cómo un proceso en segundo plano conoce su propio Pid?

  5. ¿Cómo monitorear o matar un proceso que ha sido iniciado por Cron?

Cómo encontrar un nombre de proceso usando el número PID en Linux

Linux:¿cómo identificar qué distribución de Linux se está ejecutando?

Cómo encontrar el nombre del proceso a partir de su PID

Cómo encontrar el PID y PPID de un proceso en Linux

¿Cómo identificar el puerto de un proceso?

¿Cómo identifico qué distribución de Linux se está ejecutando?