GNU/Linux >> Znalost Linux >  >> Linux

Jak identifikovat proces, který nemá PID?

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

Linux
  1. Jak zjistit, který proces zapisuje na disk v Linuxu

  2. Jak najdu ID procesu v Ubuntu?

  3. Jak mohu zabít proces podle jména místo PID?

  1. Jak získat ID procesu pro ukončení procesu nohup?

  2. Jak získat PID podle názvu procesu?

  3. Jak mohu vědět, který proces používá swap?

  1. Jak odstranit soubor, který má netisknutelné znaky?

  2. Jak mohu zjistit, který proces vytváří UDP provoz v Linuxu?

  3. Jak získat PID právě zahájeného procesu