Mám proces, který poslouchá 2 porty:45136/tcp a 37208/udp (ve skutečnosti předpokládám, že jde o stejný proces). Ale netstat nevrací žádné pid :
netstat -antlp | grep 45136
tcp 0 0 0.0.0.0:45136 0.0.0.0:* LISTEN -
Stejný výsledek s „grep 37208“.
Zkoušel jsem také lsof:
lsof -i TCP:45136
Ale nic to nevrací.
Je to nová instalace squeeze a opravdu nevím, co by tento proces mohl být. Nějaký nápad?
ODPOVĚĎ
Díky vašim komentářům jsem zjistil, co to bylo. Odinstaloval jsem nfs-server nfs-common (po dkpg –get-selections | grep nfs hledání) a neznámý proces zmizel.
Je zvláštní, že procesy jádra nejsou nijak označeny.
Ještě jednou vám oběma děkuji. 😉
Přijatá odpověď:
netstat
Existuje proces, vaše uživatelské ID prostě není zasvěceno do toho, co to je. Toto je vrstva ochrany poskytovaná lsof
to vám brání to vidět. Jednoduše spusťte příkaz znovu, ale předponujte jej pomocí sudo
místo toho příkaz.
$ sudo netstat -antlp | grep 45136
Ve výstupu lsof
je na to dokonce varování nahoře.
(Ne všechny procesy lze identifikovat, informace o procesech, které nevlastní, se nezobrazí, museli byste být root, abyste je viděli všechny.)
Příklad
$ 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
Pokud nemáte štěstí s netstat
možná ss
udělám. Stále budete muset použít sudo
a výstup může být trochu záhadnější.
Příklad
$ 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))
ID procesu stále neexistuje?
Existují případy, kdy jednoduše není PID přidružen k používanému TCP portu. O NFS si můžete přečíst v odpovědi @derobert, která je jednou z nich. Jsou i další. Mám případy, kdy používám ssh tunely pro připojení zpět ke službám, jako je IMAP. Ty se také zobrazují bez ID procesu.
V každém případě můžete použít podrobnější formu netstat
což by mohlo vrhnout další světlo na to, jaký proces nakonec používá port TCP.
$ netstat --program --numeric-hosts --numeric-ports --extend
Příklad
$ 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 -
Pokud si všimnete, že výstup obsahuje INODES, abychom mohli zpětně sledovat proces pomocí těchto informací.
$ find -inum 152555007
Což vám ukáže soubor, který vás může vést k procesu.
Související:Monitorování procesů v prostředí Linuxu?Odkazy
- Port na PID