it-swarm.com.de

Wie beendet man einen Prozess, der auf einem bestimmten Port in Linux ausgeführt wird?

Ich habe versucht, den Tomcat mit ./shutdown.sh aus dem Tomcat /bin-Verzeichnis zu schließen. Aber festgestellt, dass der Server nicht richtig geschlossen wurde. Und so konnte ich nicht neu starten
Mein Tomcat läuft an Port 8080.

Ich möchte den Tomcat-Prozess beenden, der auf 8080 ausgeführt wird. Ich möchte zunächst die Liste der Prozesse, die auf einem bestimmten Port (8080) ausgeführt werden, um auszuwählen, welcher Prozess abgebrochen werden soll.

482
veer7

Verwenden Sie den Befehl

 Sudo netstat -plten |grep Java

grep Java als Tomcat verwendet Java als Prozess.

Es wird die Liste der Prozesse mit Portnummer und Prozess-ID angezeigt

tcp6       0      0 :::8080                 :::*                    LISTEN      
1000       30070621    16085/Java

die Zahl vor /Java ist eine Prozess-ID. Verwenden Sie nun den Befehl kill, um den Prozess zu beenden

kill -9 16085

-9 bedeutet, dass der Prozess zwangsweise beendet wird.

213
veer7

Dieser fuser 8080/tcp druckt die PID des an diesen Port gebundenen Prozesses.

Und dieser fuser -k 8080/tcp wird diesen Prozess beenden.

Funktioniert nur unter Linux. Universeller ist die Verwendung von lsof -i4 (oder 6 für IPv6). 

690
nudzo

So listen Sie jeden Prozess auf, der auf den Port 8080 wartet:

lsof -i:8080

So beenden Sie jeden Prozess, der auf Port 8080 wartet:

kill $(lsof -t -i:8080)

oder heftiger:

kill -9 $(lsof -t -i:8080)

(-9 entspricht dem SIGKILL - terminate immediately/hard kill-Signal: siehe Liste der Kill-Signale und Wozu dient die Option -9 im Kill-Befehl? . Wenn kein Signal für kill angegeben ist, wird das TERM-Signal auch als -15 bezeichnet. oder soft kill wird gesendet, was manchmal nicht ausreicht, um einen Prozess zu beenden.).

432

Ich würde diesen Einzeiler hinzufügen, um nur LISTEN an einem bestimmten Port zu töten:

kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)

110
Gal Bracha

Sie können den lsof-Befehl ..__ verwenden. Die Portnummer wie hier lautet 8090

lsof -i:8090

Dieser Befehl gibt eine Liste der offenen Prozesse an diesem Port zurück.

So etwas wie…

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ssh 75782 eoin 5u IPv6 0x01c1c234 0t0 TCP localhost:8090 (LISTEN)

Um den Port freizugeben, beenden Sie den Prozess mit ihm (die Prozess-ID ist 75782).

kill -9 75782

Dieser hat für mich gearbeitet. Hier ist der Link aus dem ursprünglichen Beitrag: link

97
Kop4lyf

Wenn Sie einen Prozess beenden möchten, der auf Portnummer 8080 ausgeführt wird, müssen Sie zuerst die Prozessidentifikationsnummer (PID) des 8080-Ports suchen und anschließend beenden. Führen Sie den folgenden Befehl aus, um die PID der 8080-Portnummer zu ermitteln:

Sudo lsof -t -i:8080

Hier,

  • Sudo - Befehl zum Anfordern von Administratorrechten (Benutzer-ID und Kennwort).
  • lsof - Liste der Dateien (Wird auch verwendet, um verwandte Prozesse aufzulisten)
  • -t - Nur Prozess-ID anzeigen
  • -i - Nur mit Internetverbindungen verbundene Prozesse anzeigen
  • : 8080 - Nur Prozesse in dieser Portnummer anzeigen

So können Sie Ihre PID jetzt einfach mit folgendem Befehl beenden:

Sudo kill -9 <PID>

Hier,

  • kill - Befehl, um den Prozess zu beenden
  • -9 - gewaltsam

Sie können einen Befehl verwenden, um einen Prozess an einem bestimmten Port mit dem folgenden Befehl zu beenden:

Sudo kill -9 $(Sudo lsof -t -i:8080)

Weitere Informationen finden Sie unter dem folgenden Link So beenden Sie einen Prozess an einem bestimmten Port unter Linux

56
mahfuz110244

Dadurch werden die Prozess-IDs aller auf <port_number> laufenden Dateien ausgegeben: 

fuser -n tcp <port_number> 

Es gibt auch ein paar Sachen an stderr, also:

fuser -n tcp <port_number> 2> /dev/null

Wir können diese Prozess-IDs dann an den Befehl kill übergeben:

Sudo kill $(fuser -n tcp <port_number> 2> /dev/null)

Sie können dies auch in eine Funktion einfügen, wenn Sie es häufig tun:

function killport() {
    Sudo kill $(fuser -n tcp $1 2> /dev/null)
}
36
Brian Peterson

Um die PID des Dienstes zu erfahren, der an einem bestimmten Port ausgeführt wird:

netstat -tulnap | grep :*port_num*

sie erhalten die Beschreibung dieses Vorgangs. Jetzt benutze kill oder kill -9 pid. Leicht zu töten.

z.B

netstat -ap | grep :8080

tcp6       0      0 :::8080       :::*    LISTEN      1880/Java 

Jetzt:

kill -9 1880

Denken Sie daran, alle Befehle als root auszuführen.

31
Sanjay s.

versuche es so,

 Sudo fuser -n tcp -k 8080
17
Adil Abbasi

Holen Sie sich die PID der Aufgabe und töten Sie sie.

lsof -ti:8080 | xargs kill
12
Rahul Garg

Linux : Erst wenn Sie den Port kennen, können Sie die PID dieses Befehls finden

netstat -tulpn 

beispiel:-

 Local Address  Foreign Address  State    PID/Program name

  :::3000       :::*             LISTEN    15986/node 

Sie nehmen dann den Kill-Prozess. Führen Sie den folgenden Befehl aus:

töte -9 PID

Beispiel: - 

töte -9 15986

11
Kundan Kumar
  1. lsof -i tcp:8000 Dieser Befehl listet die Informationen zum Prozess auf, der in Port 8000 ausgeführt wird

  2. kill -9 [PID] Dieser Befehl beendet den Prozess

11

Linux : Sie können diesen Befehl verwenden, wenn Sie den Port kennen:

netstat -plten | grep LISTEN | grep 8080

AIX

netstat -Aan | grep LISTEN | grep 8080

Dann nehmen Sie die erste Spalte (Beispiel: f100050000b05bb8) und führen den folgenden Befehl aus:

rmsock f100050000b05bb8 tcpcb

tötungsprozess.

9
ben rhouma moez

kill -9 `fuser 8080/tcp|xargs -n 1`, dieser Befehl beendet auch den Prozess, der Port 8080 mit der Verbindung TCP überwacht

6
Harshit Garg

Sie können wissen, Liste aller Ports ausgeführt im System mit seinen Details (PID, Adresse usw.):

netstat -tulpn

Sie können Details einer bestimmten Portnummer kennen, indem Sie die Portnummer in folgendem Befehl eingeben:

Sudo netstat -lutnp | grep -w '{port_number}'

beispiel: Sudo netstat -lutnp | grep -w '8080' Details werden wie folgt bereitgestellt:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

Wenn Sie einen Prozess mit pid beenden möchten, dann : kill -9 {PID}

Wenn Sie einen Prozess mit der Portnummer beenden möchten : fuser -n tcp {port_number}

verwenden Sie Sudo, wenn Sie auf keine zugreifen können.

4
YAP

Wählen Sie die Portnummer und wenden Sie den Befehl grep in netstat wie unten gezeigt an

netstat -ap | grep :7070

Konsolenausgabe

tcp 0 0 ::: 7070 ::: * LISTEN 3332/Java

Töte den Dienst basierend auf PID (Prozessidentifikationsnummer)

kill -9 3332
4
Lova Chittumuri
Sudo apt-get install psmisc (or Sudo yum install psmisc)
Sudo fuser 80/tcp

Ergebnis: 80/tcp: 1858 1867 1868 1869 1871

Beenden Sie den Prozess nacheinander

töte -9 1858 

1
Fadid

Anders mit Git Bash:

stopProcessByPortNumber() {
port=":${1}"
portStrLine="$(netstat -ano | findstr LISTENING | findstr $port)"
processId="$(grep -oP '(\d+)(?!.*\d)' <<< $portStrLine)"
echo $processId
taskkill -PID $processId -F
}

zu bauen auf was @ veer7 sagte: 

wenn Sie wissen wollen, was sich im Hafen befand, tun Sie dies, bevor Sie ihn töten.

$ Sudo netstat -plten |grep Java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1000       906726      25296/Java      
tcp6       0      0 :::8009                 :::*                    LISTEN      1000       907503      25296/Java      
tcp6       0      0 :::8080                 :::*                    LISTEN      1000       907499      25296/Java      
$ ps 25296
  PID TTY      STAT   TIME COMMAND
25296 ?        Sl     0:16 /usr/lib/jvm/Java-8-openjdk-AMD64/bin/Java -Dcatalina.base=/hom

Verwenden Sie 'ps' und die Nummer des Prozesses, den netstat zurückgemeldet hat

0
JesseBoyd