it-swarm.com.de

Wie identifiziere ich einen Prozess ohne PID?

Ich habe einen Prozess, der 2 Ports abhört: 45136/tcp und 37208/udp (eigentlich gehe ich davon aus, dass es der gleiche Prozess ist). Aber netstat gibt keine PID zurück:

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

Gleiches Ergebnis mit "grep 37208".

Ich habe es auch versucht:

lsof -i TCP:45136

Aber es gibt nichts zurück. Es ist eine neue Installation von Squeeze und ich weiß wirklich nicht, was dieser Prozess sein könnte. Irgendeine Idee ?

ANTWORT Dank Ihrer Kommentare habe ich herausgefunden, was es war. Ich habe nfs-server nfs-common deinstalliert (nach einer Suche nach dkpg --get-selections | grep nfs) und der unbekannte Prozess ist verschwunden. Seltsam, dass Kernel-Prozesse in keiner Weise markiert sind.

Nochmals vielen Dank an euch beide. ;)

50
John Doe

netstat

Es gibt dort einen Prozess, Ihre Benutzer-ID ist einfach nicht eingeweiht, um zu sehen, was es ist. Dies ist eine Schutzschicht von lsof, die Sie davon abhält, dies zu sehen. Führen Sie den Befehl einfach erneut aus, stellen Sie ihm jedoch stattdessen den Befehl Sudo voran.

$ Sudo netstat -antlp | grep 45136

Es gibt sogar eine Warnung dazu in der Ausgabe von lsof oben.

(Nicht alle Prozesse konnten identifiziert werden. Nicht im Besitz befindliche Prozessinformationen werden nicht angezeigt. Sie müssten root sein, um alles zu sehen.)

Beispiel

$ 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

Wenn Sie mit netstat kein Glück haben, reicht ss vielleicht aus. Sie müssen immer noch Sudo verwenden, und die Ausgabe kann etwas kryptischer sein.

Beispiel

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

Prozess-ID noch nicht da?

Es gibt Fälle, in denen dem verwendeten Port TCP Port) einfach keine PID zugeordnet ist. Informationen zu NFS finden Sie in @ deroberts Antwort , einer davon Es gibt andere. Ich habe Fälle, in denen ich SSH-Tunnel verwende, um eine Verbindung zu Diensten wie IMAP herzustellen. Diese werden auch ohne Prozess-ID angezeigt.

In jedem Fall können Sie eine ausführlichere Form von netstat verwenden, die möglicherweise zusätzliches Licht darauf wirft, welcher Prozess letztendlich einen TCP -Port) verwendet.

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

Beispiel

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

Wenn Sie bemerken, dass die Ausgabe INODES enthält, können wir anhand dieser Informationen den Prozess zurückverfolgen.

$ find -inum 152555007

Welches zeigt Ihnen eine Datei, die Sie zu einem Prozess führen könnte.

Verweise

64
slm

Eine andere Option ist, dass der Socket nicht zu einem Prozess gehört, sondern zum Kernel. Ein häufiges Beispiel hierfür ist NFS.

Watt:~# netstat -ltp | egrep -- '-[[:space:]]*$'
tcp        0      0 *:nfs                   *:*                     LISTEN      -               
tcp        0      0 *:48131                 *:*                     LISTEN      -               
tcp6       0      0 [::]:55607              [::]:*                  LISTEN      -               
tcp6       0      0 [::]:nfs                [::]:*                  LISTEN      -               

Ich bin mir im Allgemeinen nicht sicher, wie ich diese identifizieren kann. Im speziellen Fall von NFS kann rpcinfo uns oft sagen:

[email protected]:~$ rpcinfo -p | grep 48131
    100021    1   tcp  48131  nlockmgr
    100021    3   tcp  48131  nlockmgr
    100021    4   tcp  48131  nlockmgr

Leider funktioniert das nur für IPv4. Um v6 zu erhalten, müssen Sie -p Auslassen, wodurch die Portnummern auf dumme Weise angezeigt werden: Als zwei zusätzliche Oktette der IP-Adresse. Port 55607 wird somit zu 217,55 (weil 217 × 256 + 55 = 55607):

[email protected]:~$ rpcinfo  | grep -i 217.55
    100021    1    tcp6      ::.217.55              nlockmgr   superuser
    100021    3    tcp6      ::.217.55              nlockmgr   superuser
    100021    4    tcp6      ::.217.55              nlockmgr   superuser
18
derobert