netstat
Es gibt dort einen Prozess, Ihre Benutzer-ID ist einfach nicht in der Lage zu sehen, was es ist. Dies ist eine Schutzschicht lsof
, die Sie davon abhält, dies zu sehen. Führen Sie den Befehl einfach erneut aus, aber geben Sie sudo
stattdessen den Befehl als Präfix ein .
$ sudo netstat -antlp | grep 45136
Es gibt sogar eine Warnung in der Ausgabe von lsof
oben.
(Nicht alle Prozesse konnten identifiziert werden. Informationen zu nicht im Besitz befindlichen Prozessen werden nicht angezeigt. Sie müssen 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 kein Glück haben, reicht es netstat
vielleicht ss
. Sie müssen noch verwenden sudo
, 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 dabei?
Es gibt Fälle, in denen dem verwendeten TCP-Port einfach keine PID zugeordnet ist. Sie können über NFS in der Antwort von @ derobert nachlesen , die 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 verwenden, netstat
die zusätzliche Aufschluss darüber gibt, 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 nachvollziehen.
$ find -inum 152555007
Welches zeigt Ihnen eine Datei, die Sie zu einem Prozess führen könnte.
Verweise
Eine andere Möglichkeit ist, dass der Socket nicht zu einem Prozess gehört, sondern zum Kernel. Ein häufiges Beispiel hierfür ist NFS.
Ich bin mir im Allgemeinen nicht sicher, wie ich diese identifizieren kann. Im speziellen Fall von NFS können Sie
rpcinfo
uns häufig mitteilen:Das funktioniert leider nur bei IPv4. Um v6 zu bekommen, müssen Sie aufhören,
-p
was dann die Portnummern auf alberne Weise anzeigt: Als zwei zusätzliche Oktetts der IP-Adresse. Port 55607 wird somit zu 217,55 (da 217 × 256 + 55 = 55607):quelle
rpcinfo -p
funktioniert nur für IPv4