webentwicklung-frage-antwort-db.com.de

linux-Skript zum Beenden des Java-Prozesses

Ich möchte, dass das Linux-Skript das Java-Programm beendet, das auf der Konsole ausgeführt wird.

Im Folgenden wird der Prozess als Glas ausgeführt.

[[email protected] ~]$ ps -ef |grep Java
rapp    9473    1  0 15:03 pts/1    00:00:15 Java -jar wskInterface-0.0.1-SNAPSHOT-jar-with-dependencies.jar
rapp   10177  8995  0 16:00 pts/1    00:00:00 grep Java
[[email protected] ~]$
39
d-man

Sie können pkill -f einfach wie folgt verwenden:

pkill -f 'Java -jar'

EDIT: Um einen bestimmten Java-Prozess zu beenden, der mit einem bestimmten Jar ausgeführt wird, verwenden Sie diesen regex-basierten pkill-Befehl:

pkill -f 'Java.*lnwskInterface'
81
anubhava

Wenn Sie nur einen oder alle Java-Prozesse beenden möchten, benötigen Sie lediglich Folgendes:

killall Java

Wenn Sie jedoch insbesondere den Prozess wskInterface beenden möchten, sind Sie meistens dort, und Sie müssen nur die Prozess-ID entfernen.

PID=`ps -ef | grep wskInterface | awk '{ print $2 }'`
kill -9 $PID

Wenn es so ist, gibt es wahrscheinlich einen einfacheren Weg ...

34
lynks

Verwenden Sie jps , um die laufenden Java-Prozesse aufzulisten. Der Befehl gibt die Prozess-ID zusammen mit der Hauptklasse zurück. Sie können den Befehl "kill" verwenden, um den Prozess mit der zurückgegebenen ID zu beenden, oder verwenden Sie ein Liner-Skript.

kill $(jps | grep <MainClass> | awk '{print $1}')

MainClass ist eine Klasse in Ihrem laufenden Java-Programm, die die Hauptmethode enthält.

0
Pawan

pkill -f aus irgendeinem Grund funktioniert für mich nicht. Was auch immer das tut, es scheint sehr wählerisch zu sein, tatsächlich durchzuschauen, was ps aux mir deutlich zeigt.

Nach einem schwörenden Nachmittag ging ich für Folgendes in mein Startskript:

(ps aux | grep -v -e 'grep ' | grep MainApp | tr -s " " | cut -d " " -f 2 | xargs kill -9 ) || true

0
Jilles van Gurp