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