скрипт linux для уничтожения java-процесса

Я хочу, чтобы скрипт linux убил java-программу, работающую на консоли.

Ниже приведен процесс, запущенный как 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 ~]$

4 ответов


вы можете просто использовать pkill -f такой:

pkill -f 'java -jar'

EDIT: чтобы убить конкретный процесс java, выполняющий вашу конкретную банку, используйте эту команду pkill на основе регулярных выражений:

pkill -f 'java.*lnwskInterface'

Если вы просто хотите, чтобы убить все процессы Java, то все, что вам нужно;

killall java

Если, однако, вы хотите убить wskInterface процесс в частности, то вы большую часть пути туда, вам просто нужно удалить идентификатор процесса;

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

должен это сделать, хотя, вероятно, есть более простой способ...


использовать jps перечислить запущенные процессы java. Команда возвращает идентификатор процесса вместе с основным классом. Вы можете использовать команду kill, чтобы убить процесс с возвращенным идентификатором или использовать следующий сценарий строки.

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

MainClass-это класс в запущенной java-программе, который содержит основной метод.


pkill-f по какой-то причине не работает для меня. Что бы это ни делало, кажется очень разборчивым в том, что на самом деле происходит через то, что ps aux показывает мне ясно.

после дня ругани я пошел на то, чтобы поместить следующее в мой сценарий запуска:

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