Ich habe einen Prozess, der 2 Ports abhört:45136/tcp und 37208/udp (eigentlich gehe ich davon aus, dass es sich um denselben Prozess handelt). 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 auch lsof versucht:
lsof -i TCP:45136
Aber es gibt nichts zurück.
Es ist eine Neuinstallation 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 dkpg –get-selections | grep nfs-Suche) und der unbekannte Prozess ist verschwunden.
Seltsam, dass Kernel-Prozesse in keiner Weise markiert sind.
Nochmals vielen Dank an Sie beide. 😉
Akzeptierte Antwort:
netstat
Es gibt dort einen Prozess, Ihre Benutzer-ID ist einfach nicht eingeweiht, um zu sehen, was es ist. Dies ist eine Schutzschicht, die von lsof
bereitgestellt wird das hält dich davon ab, das zu sehen. Führen Sie den Befehl einfach erneut aus, aber stellen Sie ihm sudo
voran Befehl statt.
$ sudo netstat -antlp | grep 45136
Es gibt sogar eine Warnung in der Ausgabe von lsof
oben.
(Nicht alle Prozesse konnten identifiziert werden, nicht-eigene 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 vielleicht ss
Wird besorgt. 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 immer noch nicht vorhanden?
Es gibt Fälle, in denen dem verwendeten TCP-Port einfach keine PID zugeordnet ist. Sie können in der Antwort von @derobert über NFS lesen, was eine davon ist. Da sind 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 was zusätzliches Licht darauf werfen könnte, 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 den Prozess anhand dieser Informationen zurückverfolgen.
$ find -inum 152555007
Das zeigt Ihnen eine Datei, die Sie zu einem Prozess führen könnte.
Verwandt:Prozessüberwachung in Linux-Umgebung?Referenzen
- Zur PID portieren