GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Beenden Sie den Prozess, der auf Port 80 ausgeführt wird

Es gibt mehrere Möglichkeiten herauszufinden, welcher laufende Prozess einen Port verwendet.

Unter Verwendung von fuser gibt es die PID(s) der mehreren Instanzen an, die dem Listening-Port zugeordnet sind.

sudo apt-get install psmisc
sudo fuser 80/tcp

80/tcp:               1858  1867  1868  1869  1871

Nachdem Sie dies herausgefunden haben, können Sie den/die Prozess(e) entweder stoppen oder beenden.

Sie können die PIDs und weitere Details auch mit lsof

finden
sudo lsof -i tcp:80

COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME  
nginx   1858     root    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1867 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1868 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1869 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1871 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  

Um auf Sockets zu beschränken, die lauschen auf Port 80 (im Gegensatz zu Clients, die sich mit Port 80 verbinden):

sudo lsof -i tcp:80 -s tcp:listen

Um sie automatisch zu töten:

sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill

Hier ist ein Einzeiler, der den auszuführenden Befehl zeigt:

echo kill $(sudo netstat -anp | awk '/ LISTEN / {if($4 ~ ":80$") { gsub("/.*","",$7); print $7; exit } }')

Ersetzen Sie echo bis sudo damit der Prozess tatsächlich beendet wird.


Drei Optionen zum Auflisten offener Ports werden in whatisonport von jsh angeboten :

netstat -anp --numeric-ports | grep ":${PORT}\>.*:" 

fuser -v "${PORT}"/tcp

lsof -P -S 2 -i "tcp:${PORT}" | grep "\(:${PORT}->.*:\|:$PORT (LISTEN)$\)"

Ich bevorzuge netstat weil es schnell und prägnant ist und von anderen Benutzern geöffnete Ports auflisten kann. (Obwohl es immer noch Superuser-/Benutzerrechte benötigt, um die Namen und PIDs solcher Prozesse aufzulisten.)

Ausgänge

$ netstat -anp --numeric-ports | grep ":80\>.*:" 
tcp6       0      0 :::80           :::*            LISTEN      1914/apache2    

$ fuser -v "80/tcp"
                     USER        PID ACCESS COMMAND
80/tcp:              root       1914 F.... apache2
                     www-data  12418 F.... apache2
...

$ lsof -P -S 2 -i "tcp:80" | grep "\(:80->.*:\|:80 (LISTEN)$\)"
apache2  1914     root    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
apache2 12418 www-data    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
...

Die Verwendung von grep In zwei Fällen wird nur der Port auf der lokalen Seite abgeglichen und offene Verbindungen zu einem entfernten Port 80 übersprungen. (Eine Alternative wäre die Verwendung von -l mit netstat , oder mit lsof um -sTCP:LISTEN zu verwenden , aber ich mag die Greps oben, weil sie auch outgoing abfangen Verbindungen von der angegebene Port, der gelegentlich von Interesse sein kann.)

Mit lsof wir verwenden -P um :80 anzuzeigen statt :http grep möglich zu machen. Die -S 2 Option erzwingt lsof rechtzeitig abzuschließen.

Beenden des Prozesses

Angenommen, wir möchten netstat verwenden , könnten wir die PIDs so abrufen:

$ netstat -anp --numeric-ports | grep ":80\>.*:" | grep -o "[0-9]*/" | sed 's+/$++'
1914
...

Und wir könnten diese PIDs sogar an kill übergeben :

... | xargs -d '\n' kill -KILL

Bei der Verwendung von regulären Ausdrücken besteht jedoch häufig die Möglichkeit eines Fehlalarms, daher würde ich empfehlen, sich nur die anfängliche Ausgabe von netstat anzusehen und dann manuell entscheiden, ob ausgeführt werden soll oder nicht:

$ kill -KILL 1914

Siehe auch

Ich habe ein anderes Skript namens listopenports die von Interesse sein könnten.


Linux
  1. Wie beendet man einen Prozess, der auf einem bestimmten Port in Linux läuft?

  2. kill-Befehlsbeispiele in Linux

  3. Wie kann ich den TCP-Port 16969 in Bash beenden?

  4. Finden Sie die PID des Prozesses mit einem bestimmten Port?

  5. Netcat - Wie höre ich einen TCP-Port mit einer IPv6-Adresse?

So beenden Sie einen Prozess in Linux

Kill-Befehl unter Linux

So finden und beenden Sie laufende Prozesse in Linux

So beenden Sie den laufenden Linux-Prozess auf einem bestimmten Port

Wie man einen Prozess unter Linux beendet

Laufende Prozesse