GNU/Linux >> Linux Esercitazione >  >> Linux

Come identificare un processo che non ha Pid?

Ho un processo che ascolta 2 porte:45136/tcp e 37208/udp (in realtà presumo che sia lo stesso processo). Ma netstat non restituisce alcun pid :

netstat -antlp | grep 45136
tcp        0      0 0.0.0.0:45136           0.0.0.0:*           LISTEN      - 

Stesso risultato con "grep 37208".

Ho provato anche lsof :

lsof -i TCP:45136

Ma non restituisce nulla.
È una nuova installazione di squeeze e non so davvero quale potrebbe essere questo processo. Qualche idea?

RISPOSTA
Grazie ai tuoi commenti ho scoperto di cosa si trattava. Ho disinstallato nfs-server nfs-common (dopo una ricerca dkpg –get-selections | grep nfs) e il processo sconosciuto è scomparso.
Strano però che i processi del kernel non siano contrassegnati in alcun modo.

Grazie ancora ad entrambi. 😉

Risposta accettata:

netstat

C'è un processo lì, il tuo userid non è al corrente di vedere di cosa si tratta. Questo è un livello di protezione fornito da lsof questo ti impedisce di vedere questo. Riesegui semplicemente il comando ma aggiungi il prefisso usando sudo comando invece.

$ sudo netstat -antlp | grep 45136

C'è anche un avviso al riguardo nell'output di lsof in alto.

(Non tutti i processi possono essere identificati, le informazioni sui processi non di proprietà non verranno mostrate, dovresti essere root per vederle tutte.)

Esempio

$ 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

Se non hai fortuna con netstat forse ss andrà bene. Dovrai comunque utilizzare sudo e l'output può essere un po' più criptico.

Esempio

$ 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))

L'ID processo non è ancora presente?

Ci sono casi in cui semplicemente non c'è un PID associato alla porta TCP in uso. Puoi leggere di NFS, nella risposta di @derobert, che è una di queste. Ce ne sono altri. Ho casi in cui utilizzo i tunnel ssh per riconnettermi a servizi come IMAP. Anche questi vengono visualizzati senza un ID processo.

In ogni caso puoi usare una forma più dettagliata di netstat che potrebbe gettare ulteriore luce su quale processo utilizza in definitiva una porta TCP.

$ netstat --program --numeric-hosts --numeric-ports --extend

Esempio

$ 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  -             

Se noti che l'output include INODES in modo da poter tornare indietro nel processo utilizzando queste informazioni.

$ find -inum 152555007

Che ti mostrerà un file che potrebbe portarti a un processo.

Correlati:monitoraggio dei processi in ambiente Linux?

Riferimenti

  • Porta a PID

Linux
  1. Come determinare quale processo sta scrivendo su disco in Linux

  2. Come posso uccidere un processo per nome invece che per PID?

  3. Come ottenere l'ID del processo per terminare un processo nohup?

  4. Come ottenere il PID in base al nome del processo?

  5. Come posso sapere quale processo sta usando lo scambio?

Come trovare un nome di processo utilizzando il numero PID in Linux

Come trovare il nome del processo dal suo PID

Come trovare il PID e il PPID di un processo in Linux

Come trovo l'ID del processo in Ubuntu?

Come identificare la porta di un processo?

Come posso identificare quale distribuzione Linux è in esecuzione?