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.
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.
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).
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.).
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)
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
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,
So können Sie Ihre PID jetzt einfach mit folgendem Befehl beenden:
Sudo kill -9 <PID>
Hier,
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
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)
}
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.
versuche es so,
Sudo fuser -n tcp -k 8080
Holen Sie sich die PID der Aufgabe und töten Sie sie.
lsof -ti:8080 | xargs kill
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
lsof -i tcp:8000
Dieser Befehl listet die Informationen zum Prozess auf, der in Port 8000 ausgeführt wird
kill -9 [PID]
Dieser Befehl beendet den Prozess
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.
kill -9 `fuser 8080/tcp|xargs -n 1`
, dieser Befehl beendet auch den Prozess, der Port 8080 mit der Verbindung TCP überwacht
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.
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
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
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