скрипт 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