Suche nach der PID des Prozesses mit einem bestimmten Port


Übersicht

Wir alle wissen, dass ein Port nur von einer einzelnen Anwendung oder einem Dienst gleichzeitig verwendet werden kann. Manchmal müssen wir wissen, welcher Prozess einen bestimmten Port abhört.

In diesem Tutorial sehen wir verschiedene Ansätze, um den Prozess zu finden, der auf einem bestimmten Port in Linux lauscht.

Root-Berechtigung

Unter Linux kann nur der Root-Benutzer oder der Prozessbesitzer die detaillierten Informationen zum Prozess erhalten.,

Wenn wir einen Prozess überprüfen möchten, der einen bestimmten Port abhört, wissen wir nicht, wem der Prozess gehört.

Mit Root-Berechtigung können wir alle erforderlichen Informationen zum Prozess erhalten, z. B. die Prozesskennung.

Daher müssen wir unsere Netzwerktools möglicherweise mit dem Root-Benutzer (oder mit sudo) starten.

Verwenden von netstat

Der Befehl netstat ist Mitglied des net-tools-Pakets.

In der Vergangenheit war es in vielen Linux-Distributionen vorinstalliert. Das net-tools-Paket wurde jedoch seit 2011 nicht mehr aktualisiert.,

Aufgrund der fehlenden Unterstützung moderner Linux-Kernel-Funktionen und anderer Gründe ist das net-tools-Paket veraltet.

Das heißt, netstat selbst ist immer noch weit verbreitet, also schauen wir uns an, wie es helfen kann.

Sehen wir uns zunächst eine Beispielausgabe des Befehls netstat an:

Mit den Optionen ltnup zeigt uns netstat alle im obigen Beispiel verwendeten Ports.,

Schauen wir uns an, was die Optionen bedeuten:

  • l – nur Listening Sockets anzeigen
  • t – TCP – Verbindungen anzeigen
  • n – Adressen in numerischer Form anzeigen
  • u – UDP-Verbindungen anzeigen
  • p-Prozess-ID/Programmname anzeigen

Wenn wir die obige Ausgabe überprüfen, ist die letzte Spalte genau das, wonach wir suchen: die PID und der Prozessname, die ein bestimmter Hafen.

Wir können die netstat-Ausgabe einfach an den Befehl grep weiterleiten, um die Prozessinformationen für einen einzelnen Port abzurufen.,

Lassen Sie uns zum Beispiel sehen, welcher Prozess Port 22 abhört:

root# netstat -ltnup | grep ':22'tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 575/sshd

Mit ss

Im vorherigen Abschnitt haben wir besprochen, dass das net-tools-Paket veraltet ist.

Der Befehl ss ersetzt den Befehl netstat.

Nun wollen wir sehen, wie der ss-Befehl verwendet wird, um zu sehen, welcher Prozess Port 22 abhört:

Wenn wir die Optionen überprüfen, stellen wir fest, dass die an den ss-Befehl übergebenen Optionen identisch sind wir an netstat übergeben.,

Der einzige Unterschied besteht darin, dass wir den Statusfilter des ss-Dienstprogramms anstelle eines zusätzlichen grep-Prozesses zum Filtern der Ausgabe verwendet haben.

Ähnlich wie bei der Ausgabe des Befehls netstat liegen auch die erwarteten Prozessinformationen in der letzten Spalte.

Mit lsof

Der Befehl lsof kann alle geöffneten Dateien in einem Linux-System auflisten.,

Wir können den Befehl lsof verwenden,um den Prozess mithilfe eines bestimmten Ports mit der Option-i :port_number zu finden:

root# lsof -i :22COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 575 root 3u IPv4 19373 0t0 TCP *:ssh (LISTEN)

Die ersten vier Spalten in der obigen Ausgabe geben den Prozessnamen an, der auf Port 22 und seiner PID, dem Eigentümer und dem Dateideskriptor lauscht.

Wir können multiple-i :port an den Befehl lsof übergeben, um herauszufinden, welche Prozesse an verschiedenen Ports überwacht werden:

root# lsof -i :22 -i :68COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 575 root 3u IPv4 19373 0t0 TCP *:ssh (LISTEN)dhcpcd 8822 root 10u IPv4 49601 0t0 UDP *:bootpc

Mit fuser

Das Dienstprogramm fuser zeigt an, welche Prozesse benannte Dateien, Sockets oder Dateisysteme verwenden., Es ist im psmisc-Paket enthalten und standardmäßig auf vielen modernen Linux-Distributionen vorinstalliert.

Damit können wir die Informationen des Prozesses anzeigen, der an einem bestimmten Port ausgeführt wird. Lassen Sie uns noch einmal die PID der Verarbeitung von TCP-Port 22 herausfinden:

root# fuser 22/tcp22/tcp: 575

Die obige Ausgabe ist ziemlich einfach. Wir wissen, dass der Prozess mit PID 575 TCP-Port 22 abhört.

Es werden jedoch keine detaillierten Informationen zum Prozess angegeben, z. B. wie heißt der Prozess 575? wem gehört der Prozess? und so weiter.,

Wenn wir weitere Details zum Prozess erhalten möchten, können wir die Option „-v“ an den Befehl fuser übergeben, um eine ausführliche Ausgabe zu erhalten:

root# fuser -v 22/tcp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd

Mit dem Befehl fuser können wir auch die laufenden Prozessinformationen an mehreren TCP-oder UDP-Ports auf einmal überprüfen:

root# fuser -v 22/tcp 68/udp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd68/udp: root 8822 F.... dhcpcd

In diesem kurzen Artikel haben wir vier verschiedene Linux-Befehlszeilenprogramme mit Beispielen gelernt, um die Informationen des Prozesses zu ermitteln, der an einem bestimmten Port abhört.,

Sie sind alle sehr mächtige Werkzeuge in unserem Arsenal auf der Linux-Befehlszeile zu haben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Zur Werkzeugleiste springen