Wie man einen Linux-Prozess über die Portnummer beendet



Kennen Sie das Problem, wenn ein Prozess auf Ihrem Linux-System einen Port blockiert und Sie ihn einfach nur beenden möchten? Vielleicht ist eine Anwendung eingefroren, oder Sie befürchten, dass etwas Unerwünschtes Ihre Netzwerkressourcen beansprucht. Was auch immer der Grund ist: Zu wissen, wie man diesen Prozess findet und beendet, kann viel Ärger ersparen. Glücklicherweise bietet Linux einige praktische Befehle – fuser, lsof und netstat –, die mit etwas Geschick in der Kommandozeile helfen, den Prozess zu identifizieren, der einen bestimmten Port belegt, und ihn zu beenden.

Zugegeben, wenn Sie nicht an die Arbeit im Terminal gewöhnt sind, mag es anfangs etwas einschüchternd wirken. Doch sobald Sie sich mit diesen Tools vertraut gemacht haben, können Sie Netzwerkprobleme beheben, fehlerhafte Anwendungen stoppen oder sogar potenzielle Sicherheitsbedrohungen recht schnell beseitigen. Seien Sie jedoch vorsichtig: Das Beenden von Prozessen mit ` kill -9` verläuft nicht immer reibungslos und kann bei unvorsichtiger Vorgehensweise zu Datenverlust führen.

Wie man einen Linux-Prozess mit dem Befehl fuser beendet

Methode 1: Verwendungfuser

Das ist wahrscheinlich der einfachste Weg. Der fuserBefehl zeigt an, welche Prozesse auf einen bestimmten Port oder eine bestimmte Ressource zugreifen. Das ist besonders praktisch, wenn man nur die Portnummer kennt und sehen möchte, wer dort aktiv ist.

Warum ist das hilfreich? Es listet die Prozess-IDs (PIDs) auf, die einem Port zugeordnet sind, sodass Sie nicht lange suchen müssen. Wann ist das nützlich? Normalerweise, wenn ein Port blockiert zu sein scheint oder Konflikte aufgrund von „Port bereits belegt“ auftreten. Was ist zu erwarten? Die Ausführung fuserliefert die PIDs, und das Hinzufügen von -kbeendet die entsprechenden Prozesse.

Hier ist die typische Syntax:

fuser -n tcp 80

Ersetzen Sie gegebenenfalls tcpdurch udp[Hier sollte der Platzhalter stehen] und 80durch Ihren Zielport. Diese Liste zeigt die Prozesse an, die TCP-Port 80 verwenden. Um diese Prozesse zu beenden, fügen Sie einfach Folgendes hinzu -k:

sudo fuser -k -n tcp 80

Das Ausführen als Administrator ist oft notwendig, insbesondere wenn Sie nicht der Eigentümer der Prozesse sind. Auf manchen Systemen werden ohne Administratorrechte sudomöglicherweise nicht alle Prozesse aufgelistet oder beendet.

Achtung: Die Verwendung von `SIGTERM` -KILLanstelle von -k`SIGTERM` sendet SIGKILL, wodurch Prozesse ohne Aufräumarbeiten zwangsweise beendet werden. Manchmal funktioniert dies, aber es kann zu Datenverlust führen – verwenden Sie es nur, wenn SIGTERM nicht zum gewünschten Ergebnis führt. Beispiel:

sudo fuser -KILL -n tcp 80

Methode 2: Verwendunglsof

Ein anderer Ansatz, insbesondere wenn man Details darüber benötigt, was einen Port belegt, ist der lsofBefehl. Er zeigt geöffnete Dateien an, und Netzwerk-Sockets sind in der Linux-Welt Dateien.

Warum diese Option wählen? Wenn Sie eine schnelle Liste der Prozesse mit ihren Prozess-IDs (PIDs) und Informationen zu deren Verbindungen benötigen. Wann sollte man sie verwenden? Normalerweise, wenn die Standardoption fusernicht verfügbar ist oder Sie mehr Informationen wünschen. Der grundlegende Befehl sieht folgendermaßen aus:

lsof -i tcp:80

Hier werden die Prozesse angezeigt, die über TCP-Port 80 verbunden sind oder auf diesen lauschen. Um nur die Prozess-IDs (PIDs) zu erhalten, können Sie Folgendes tun:

kill $(lsof -t -i tcp:80)

Falls sich einige Prozesse trotz normaler Signale nicht beenden lassen, können Sie sie mit folgendem Befehl zwangsweise beenden -9:

kill -9 $(lsof -t -i tcp:80)

Vorsicht: Wie immer kann das erzwungene Beenden von Prozessen Probleme verursachen, wenn diese kritische Aufgaben ausführen. Setzen Sie diese Funktion sparsam ein.

Methode 3: Verwendungnetstat

Dieses Tool ist etwas älter, aber in vielen Fällen immer noch nützlich.netstatEs zeigt aktive Netzwerkverbindungen und Listening-Sockets sowie Prozess-IDs (PIDs) an, wenn die richtigen Parameter verwendet werden.

Warum der Aufwand? Wenn Sie sehen möchten, welche Prozesse bestimmte Ports belegen – vielleicht bevor Sie sie beenden. Wann? Wenn Ihr System scheinbar belegte Ports hat und Sie nicht wissen, von wem. Der Befehl könnte so aussehen:

sudo netstat -p tcp -l -n

Diese Liste zeigt alle laufenden TCP-Sockets mit Prozessinformationen an. Um nach einem bestimmten Port wie 80 zu filtern, müssen Sie sie möglicherweise mit anderen Tools wie [Toolname einfügen] kombinieren grep, da netstat[Toolname einfügen] nicht direkt nach Port filtert.

sudo netstat -p tcp -l -n | grep :80

Notieren Sie sich in der Ausgabe die Prozess-ID (PID) und beenden Sie den Prozess anschließend mit folgendem Befehl:

sudo kill 1234

Oder, um gewaltsam anzuhalten:

sudo kill -9 1234

Hinweis: Für die meisten dieser Schritte benötigen Sie sudo, da netstat oft Root-Rechte benötigt, um alle Prozessinformationen anzuzeigen. Beachten Sie außerdem, dass das direkte Beenden von Prozess-IDs (PIDs) bei unvorsichtiger Vorgehensweise auch andere Prozesse beenden kann.Überprüfen Sie daher alle Befehle sorgfältig, bevor Sie sie ausführen.

Steuern Sie Ihre Linux-Anwendungen

Insgesamt bieten diese Befehle ein recht gutes Werkzeug, um Prozesse zu beenden, die bestimmte Netzwerkports belegen. Seien Sie jedoch vorsichtig – das erzwungene Beenden von Prozessen kill -9kann manchmal zu Problemen oder Datenbeschädigung führen. Versuchen Sie im Zweifelsfall zunächst ein sanfteres SIGTERM-Signal.

Und wenn Sie Wert auf Sicherheit legen, ist dies ein guter Schritt, um zu überprüfen, wer oder was Ihre Ports belegt. Oder vielleicht einfach einen unerwünschten Prozess zu beenden, der versehentlich gestartet wurde. Bei einer Konfiguration hat es auf Anhieb funktioniert, bei einer anderen nicht so recht – die Unberechenbarkeit von Linux sorgt für Abwechslung.

Denn natürlich muss Linux es manchmal etwas komplizierter machen als nötig.

Zusammenfassung

  • Dient fuser -n tcp/udp [port]zum Auffinden und Beenden von Prozessen an einem Port.
  • Dient lsof -i tcp:portzur Identifizierung und anschließend zu killden Prozessen.
  • Nutzen Sie diese Funktion, netstat -p tcp -l -num aktive Listening-Sockets anzuzeigen und Prozess-IDs (PIDs) zu erhalten.
  • Seien Sie vorsichtig mit erzwungenen Beendigungen, insbesondere mit -9; ​​dies kann zu Datenverlust oder Instabilität führen.

Zusammenfassung

Das mag anfangs viel erscheinen, aber sobald man sich daran gewöhnt hat, wird das Beenden problematischer Prozesse zur Gewohnheit.Überprüfen Sie aber immer genau, welche Prozesse Sie beenden – niemand möchte versehentlich einen wichtigen Systemdienst zum Absturz bringen. Hoffentlich hilft das, die lästigen Portkonflikte zu lösen und Ihren Linux-Rechner reibungslos am Laufen zu halten.



War dieser Artikel hilfreich?