Как найти идентификатор процесса работающего процесса Java в Windows? А как убить процесс в одиночку?

Я хочу убить определенный процесс Java в Windows, как в Linux (ps -aux чтобы стать процессным, а затем kill processid убить процесс).

9 ответов

Решение

Вы можете использовать jps Утилита, включенная в JRE для поиска идентификатора процесса Java-процесса. Вывод покажет вам имя исполняемого файла JAR или имя основного класса.

Затем используйте диспетчер задач Windows, чтобы завершить процесс. Если вы хотите сделать это в командной строке, используйте

TASKKILL /PID %PID%

Вы также можете найти PID Java-программы с помощью диспетчера задач. Вы включаете столбцы PID и командной строки View -> Select Columns и затем в состоянии найти правильный процесс.

Ваш результат будет примерно таким:введите описание изображения здесь

Это будет работать, даже если запущено несколько экземпляров jar

wmic Path win32_process Where "CommandLine Like '%yourname.jar%'" Call Terminate

После установки пути вашего JDK использовать JPSЗатем вы можете легко убить его с помощью диспетчера задач.
JPS даст вам все процессы Java

В Windows мы можем использовать PowerShell для отображения запущенного процесса Java. Затем, используя идентификатор процесса, мы можем убить процесс. Пожалуйста, найдите приведенные ниже команды, которые необходимо выполнить в PowerShell.

Чтобы перечислить процесс Java.

      ps | Where-Object -Property ProcessName -EQ -Value 'Java'

Чтобы убить процесс Java с определенным идентификатором.

      Stop-Process <PID>

Вышеупомянутый подход работал для меня.

Решение, которое я нашел, очень просто. Используйте WMIC и Java Runtime для определения и уничтожения процесса.

Часть 1: Вам нужно поместить какой-то идентификатор в командную строку запуска вашего приложения. Например, что-то вроде:

String id = "com.domain.app";

Часть 2: Когда вы запускаете свое приложение, обязательно включите строку. Допустим, вы запускаете его из Java, сделайте следующее:

Runtime.getRuntime().exec(
   "C:\...\javaw.exe -cp ... -Dwhatever=" + id + " com.domain.app.Main"
);

Часть 3: Чтобы убить процесс, используйте WMIC Window. Просто убедитесь, что ваше приложение было запущено и содержит ваш идентификатор сверху:

Runtime.getRuntime().exec(
  "wmic process Where \"CommandLine Like '%" + id + "%'\" Call Terminate"
);
  1. Откройте Git Bash
  2. Тип ps -ef | grep java
  3. Найди pid запуска jdk
  4. kill -9 [pid]

В Windows XP и более поздних версиях есть команда: список задач, в котором перечислены все идентификаторы процессов.

Чтобы убить процесс в Windows, смотрите:

Действительно убивает процесс в Windows | Переполнение стека

Вы можете выполнять OS-команды в Java:

Runtime.getRuntime().exec("your command here");

Если вам нужно обработать вывод команды, см. Пример: использование Runtime.exec() в Java

Это специфично для Windows. Я столкнулся с той же проблемой, когда мне пришлось убить одну конкретную Java-программу с помощью taskkill. Когда я запускал java-программу, в списке задач отображалась та же программа с именем изображения, установленным как java.exe. Но убить его с помощью taskkill /F java.exe остановит все другие Java-приложения, кроме предназначенных, что не требуется.

Итак, я запускаю ту же Java-программу, используя:

start "MyProgramName" java java-program..

Здесь команда запуска откроет новое окно и запустит Java-программу с заголовком окна, установленным в MyProgramName.

Теперь, чтобы убить эту java-программу, используйте следующую команду taskkill:

taskkill /fi "MyProgramName"

Ваша Java-программа будет убита только. Отдых будет незатронут.

Другие вопросы по тегам