Shell script, чтобы остановить программу java

Есть ли способ остановить java-программу, запущенную с помощью оболочки script, зная только имя. Я использую оболочку ksh

Ответ 1

Добавьте уникальное свойство JVM, чтобы легко идентифицировать его, например. для test.class

java -Duniquename=1 test

Чтобы убить его:

ps ax | grep uniquename | grep -v grep | awk '{print $1}' | xargs kill

Ответ 2

после Предложения Mnementh:

это должно выполнить задание

jps -l | grep org.example.MyMain | cut -d ' ' -f 1 | xargs -rn1 kill
  • jps -l: перечислить процесс java с полным именем пакета для основного класса приложения или полного имени пути к файлу JAR приложения.

  • grep: выберите нужный вам процесс

  • cut -d -' ' -f 1: разделите вывод в столбцах с помощью разделителя '' и напечатайте только первый (pid)

  • xargs -rn1 kill: выполнить kill для каждого PID (если есть)

обратите внимание, что вы должны запускать jps и xargs с одним и тем же пользователем (или root) при запуске процесса

Ответ 3

Вы можете использовать jps, идентифицирующий идентификатор процесса, связанный с именем запущенной java-программы (jps - это менеджер процессов для java-программ). С помощью этого id вы можете нормально убить процесс.

Ответ 4

Вы можете использовать pkill:

pkill your_java_program_name

Это будет работать, если вы запустите только один экземпляр вашей программы.

Ответ 5

вы можете использовать опцию -o ps для форматирования вывода,

ps -eo cmd,pid | awk '!/awk/&&/mycommand/{cmd="kill -9 "$2;system(cmd)}'