Ich benutze Tomcat und manchmal bricht es den Prozess nicht richtig ab, wenn ich ihm sage, dass er gestoppt werden soll.
Mein Weg um dies zu tun ist auch:
lsof -i tcp:8080
welche Ausgänge:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 888 root 35u IPv6 780659 0t0 TCP *:http-alt (LISTEN)
java 888 root 39r IPv6 790103 0t0 TCP localhost:58916->localhost:http-alt (CLOSE_WAIT)
java 888 root 40r IPv6 792585 0t0 TCP localhost:58936->localhost:http-alt (CLOSE_WAIT)
java 888 root 75r IPv6 785553 0t0 TCP localhost:58701->localhost:http-alt (CLOSE_WAIT)
java 888 root 77r IPv6 787642 0t0 TCP localhost:58814->localhost:http-alt (CLOSE_WAIT)
java 888 root 130u IPv6 783894 0t0 TCP localhost:58686->localhost:http-alt (CLOSE_WAIT)
java 888 root 353u IPv6 780929 0t0 TCP localhost:58632->localhost:http-alt (CLOSE_WAIT)
Ich renne dann
kill -9 pid
Ich möchte einen Weg finden, um alle PID-Nummern zu erhalten und sie zu töten. Die Sache ist, dass ich nicht weiß, wie ich dieses Feld isolieren soll.
tomcat
Prozess geöffnet haben, können Sie verwendenkillall -9 tomcat
Antworten:
Es gibt eine
-t
(knappe) Optionlsof
, die genau das tut, wonach Sie suchen, zSehen
man lsof
Vorausgesetzt, Sie verfügen über die erforderlichen Berechtigungen, können Sie das Ergebnis
kill
als Liste von PIDs mit Befehlsersetzung übergeben:quelle
Vergiss nicht die
--no-run-if-empty
Möglichkeit zu töten :)Auf diese Weise wird kill nur ausgeführt, wenn ein Prozess zuhört, und Sie müssen die Überprüfung nicht selbst durchführen.
quelle
lsof -i tcp:8080
erzeugt die Ausgabe,| egrep -v "COMMAND PID USER"
löscht dann die Kopfzeile,| awk '{print $2}'
druckt dann das 2. Feld,| sort -n
bereitet die Zahlen für vor| uniq
, wobei jede eindeutige PID nur einmal ausgegeben wird . Alles zusammen ergibt:Aber
pkill -KILL tomcat
oderkillall -KILL tomcat
ist einfacher.quelle
Der One Liner von @waltinator ist großartig.
Ich werde es etwas mehr Geschmack hinzufügen:
ODER
quelle
Dies ist das Skript, das ich mir mit ein wenig Fehlerprüfung ausgedacht habe.
quelle
Hier ist eine einfache Fischschalenfunktion
Stecken Sie diesen Sauger einfach in eine Datei an dieser Stelle
~/.config/fish/functions/kill-port.fish
und schon können Sie loslegen. Du kannst es so nennenkill-port 8000
quelle