Ich versuche, ein Skript zu schreiben, das den Dienst beendet, der an einem bestimmten Port ausgeführt wird. Das ist mein Skript:
a=$(ps ax | grep 4990 | grep java | awk '{print $1}')
kill -9 $a
Es ist ein Java-Programm. Dieses Skript funktioniert manchmal, schlägt aber die meiste Zeit auf mysteriöse Weise fehl.
Gibt es eine andere Möglichkeit, einen auf einem Port ausgeführten Dienst zu beenden? Mein Hafen ist 4990
.
Antworten:
Sie können versuchen
fuser
:Oder verwenden Sie
lsof
, um die Prozess-ID abzurufen, und geben Sie dann Folgendes einkill
:quelle
tcp
.-t
Flagge, das habe ich so lange gebraucht.Wenn Sie einen Dienst oder Prozess beenden möchten, der auf Port 8080 ausgeführt wird, müssen Sie zuerst die PID (8080 Port Process Identification Number) ermitteln und dann beenden. Führen Sie den folgenden Befehl aus, um die PID der 8080-Portnummer zu ermitteln:
Hier,
So können Sie Ihre PID jetzt ganz einfach mit dem folgenden Befehl beenden:
Hier,
Mit einem Befehl können Sie einen Prozess an einem bestimmten Port mit dem folgenden Befehl beenden:
Weitere Informationen finden Sie unter folgendem Link: So beenden Sie einen Prozess an einem bestimmten Port unter Linux
quelle
kill -9
gibt dem Zielprozess keine Gelegenheit zum Aufräumen. Erwägen Siekill
zumindest anfänglich die Verwendung von Plain .kill.php
$ php kill.php 8088
quelle
kill -9
gibt dem Zielprozess keine Gelegenheit zum Aufräumen. Erwägen Siekill
zumindest anfänglich die Verwendung von Plain .lsof -t -i:port_id
Befehl enthalten, wenn der Erstellungsprozess leer ist, kann dasport_id
oderprocess id
vonport_id
leer sein. Diesmal wird ein Befehlsfehler angezeigt, um diese Art von Fehler zu vermeiden. Hier kann ich die genaue Prozess-ID des angegebenen Ports töten