skrypt Linuksa do zabicia procesu Javy

Chcę, aby skrypt Linuksa zabił program java działający na konsoli.

Poniżej znajduje się proces uruchomiony jako jar.

[rapp@s1-dlap0 ~]$ 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
[rapp@s1-dlap0 ~]$
Author: d-man, 2012-12-05

4 answers

Możesz po prostu użyć pkill -f w następujący sposób:

pkill -f 'java -jar'

EDIT: aby zabić konkretny proces java uruchamiający Twój specyficzny jar użyj tego polecenia pkill opartego na regex:

pkill -f 'java.*lnwskInterface'
 74
Author: anubhava,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-05 17:00:50

Jeśli chcesz tylko zabić dowolny / wszystkie procesy Javy, to wszystko czego potrzebujesz to;

killall java

Jeśli jednak chcesz zabić proces wskInterface w szczególności, to jesteś tam w większości przypadków, wystarczy rozebrać identyfikator procesu;

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

Powinien to zrobić, prawdopodobnie jest łatwiejszy sposób...

 31
Author: lynks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-04 21:08:56

Użyj jps , aby wyświetlić listę uruchomionych procesów Javy. Polecenie zwraca ID procesu wraz z klasą główną. Możesz użyć polecenia kill, aby zabić proces o zwracanym id lub użyć jednego skryptu liner.

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

MainClass jest klasą w uruchomionym programie java, która zawiera główną metodę.

 0
Author: Pawan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-08 20:02:44

Pkill-f z jakiegokolwiek powodu nie działa dla mnie. Cokolwiek to robi, wydaje się bardzo wybredne w tym, co pokazuje mi ps aux wyraźnie tam jest.

Po popołudniowym przeklinaniu poszedłem do umieszczenia w skrypcie startowym:

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

 0
Author: Jilles van Gurp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-30 14:47:59