In Linux sind Prozesse Teil des täglichen Lebens des Systems, da sie es beiden Anwendungen und jedem Dienst ermöglichen, so zu funktionieren, wie es ist.Wenn ein Prozess fehlschlägt, können wir ernsthafte Probleme haben, aber wenn ein Prozess eine Fehlkonfiguration aufweist oder vorübergehende Fehler hat, können wir zentralisierte Fehler im globalen System oder in unseren Tasks finden, jetzt sind viele Prozesse mit einem bestimmten Port für die Zieltasks verbunden, und deshalb kann es bei vielen Gelegenheiten notwendig sein, den Prozess eines Ports zu beenden aus Gründen wie:
- Geben Sie den Port für eine andere Verwendung frei
- Blockieren der Anwendung, des Programms oder des Dienstes, die auf diesem Port ausgeführt werden
- Störungen der Systemleistung
Es gibt einige Methoden, um den Prozess eines Ports abzuschließen, und TechnoWikis wird zwei davon im Detail erklären.
Um auf dem Laufenden zu bleiben, denken Sie daran, unseren YouTube-Kanal zu abonnieren! ABONNIEREN
1 Beenden Sie den Linux-Portierungsprozess mit SOCAT / KILL
SOCAT ist ein Dienstprogramm, das bidirektionale Datenübertragungen unter Verwendung von zwei unabhängigen Datenkanälen unter Linux ermöglicht. Die Verwendungssyntax lautet wie folgt:
socat [Optionen] <Adresse 1|> <Adresse 2>
- Aufzeichnungen
- Rohre
- Geräte (seriell, Pseudoterminal)
- Sockets (UNIX, IP4, IP6 – roh, UDP, TCP)
- SSL-Sockets
- GNU-Zeileneditor
- Programme
- Proxy-Verbindungen
- Dateideskriptoren
- TCP-orientierte Programme auf eine serielle Leitung umleiten
- Verwenden Sie ein IP6-Relais
- Um als TCP-Port-Weiterleitung zu fungieren
- Arbeiten Sie als Firewall-Tool
- -V: Ermöglicht das Anzeigen der Version und Informationen von Funktionen im Standard-Exit
- -hh : Alle gängigen Adressoptionsnamen auflisten
- -d[ddd]: erhöht die Ausführlichkeit oder Lesart des Ergebnisses
- -D: Analysiert Dateideskriptoren vor der Ausführung
- -ls: Sende ein Ereignis an stderr
- -lp<Programm>: definiert das zum Einloggen verwendete Programm
- -lu: verwendet Mikrosekunden, um Zeitstempel aufzuzeichnen
- -v – Erstellt einen ausführlichen Text-Dump des Datenverkehrs
- -lh: fügt den Hostnamen in die Nachricht ein
- -u: Unidirektionalen Modus von links nach rechts verwenden
- T<timeout>: ist das gesamte Leerlauf-Timeout in Sekunden
- -U unidirektionaler Modus von rechts nach links)
- -g: Optionsgruppen nicht prüfen
- -4: legt als Präferenz IPv4 fest
- -6: IPv6 als Präferenz festlegen
In diesem Fall verwenden wir Ubuntu, öffnen das Terminal und installieren Socat:
sudo apt install socat
Für Fedora führen wir aus:
sudo dnf install socat
In Manjaro können wir Folgendes ausführen:
sudo pacman -S sokat
Wir erstellen eine TCP-Verbindung zu einem Port, dazu benötigen wir die Quell- und Zieladresse (wir können STDIN oder STDOUT verwenden) und zusätzlich müssen wir das Protokoll, die IP-Adresse und die Portnummer hinzufügen:
socat tcp-listen:"port",bind=127.0.0.1 stdout &
In diesem Fall wurde eine Verbindung zwischen einem lauschenden TCP-Socket unter Verwendung von Port 7889 und der Annahme der Loopback-IP-Adresse von 127.0.0.1 mit STDOUT erstellt, wenn wir das „&“-Zeichen hinzufügen, beziehen wir uns darauf, dass es im Hintergrund läuft.
Wir erstellen UDP- und SCTP-Verbindungen:
socat udp-listen:"port",bind=127.0.0.1 stdout & socat sctp-listen:"port",bind=127.0.0.1 stdout &
Damit wurden diese Prozesse auf diesem Port aktiviert, wir werden den KILL-Befehl verwenden, um diesen Prozess zu “beenden” oder zu beenden, zuerst listen wir die Details des Prozesses auf:
lsof -i tcp:"port"
Unter Berücksichtigung der PID beenden wir den Vorgang mit dem Befehl:
sudo kill PID
Wir geben das Passwort bei Bedarf ein:
Wir bestätigen, dass der Vorgang abgeschlossen ist:
lsof -i tcp:"port"
Als zusätzlichen Punkt ist es möglich, die Ausgabe von lsof an awk zu leiten und anzugeben, dass nach den Zeilen gesucht werden soll, die den ausgewählten Port enthalten, und das zweite Feld dieser Zeile auszugeben, ohne die PID anzuzeigen, in diesem Fall wird es ausgeführt :
lsof -i tcp:port | awk '/port/{print $2}'
Wir listen nun den SCTP-Prozess auf:
lsof -i sctp:"port"
Wir werden die folgende Nachricht sehen:
SCTP (Stream Control Transmission Protocol) ist ein Protokoll, das entwickelt wurde, um eine Verbindung zu ermöglichen, um mehrere Datenströme gleichzeitig zwischen zwei Endpunkten zu übertragen. Um dieses Protokoll zu verwalten, verwenden wir den Befehl ss:
ss-sap
Die verwendeten Parameter waren:
- -S (SCTP) : Ermöglicht die Suche nach SCTP-Sockets
- -a (all – all): Ermöglicht die Suche nach allen Arten von Sockets
- -p (Prozesse): Ermöglicht das Auflisten der Details des Prozesses über den Socket
Führen Sie nun Folgendes aus:
Mit diesem Befehl wurde das Ergebnis von ss mit grep verknüpft und dann wird die Portnummer gesucht, dann wird die Ausgabe von grep mit awk verbunden, dort erzeugt der Parameter -F eine trennende Zeichenfolge, wobei das Komma “,” als Feld fungiert delimiter wird nach einer Zeichenkette mit dem Wert „pid=“ gesucht und dann das zweite Feld ausgegeben.
ss-Sap | grep "Port" | awk -F',' '/pid=/{print $2}'
2 Prozess eines Linux-Ports mit FUSER beenden
- -a : Alle angegebenen Dateien anzeigen
- -F: Ignorierte Fehler
- -k: Prozesse beenden, die auf die definierte Datei zugreifen
- -i: gibt dem Benutzer eine Bestätigung, bevor der Prozess beendet wird
- -m – Gibt die Datei auf einem gemounteten Dateisystem oder Blockgerät an, das zur Verarbeitung gemountet ist
- -n Leerzeichen: Ermöglicht die Auswahl eines anderen Namensraums
- -u : Fügen Sie den Benutzernamen des Prozessbesitzers zu jeder PID hinzu
Wir öffnen das Terminal und greifen auf Portdetails zu:
Fixierer -n TCP-Port Fixierer-Port/UDP
Wir beenden den Prozess:
sudo fuser -k Port/Protokoll
Wir können in einigen Fällen ein vollständigeres Ergebnis sehen:
Mit diesen Optionen ist es möglich, Port-Prozesse unter Linux zu beenden.