it-swarm.com.ru

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

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

23
Muthu Kumar

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

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

TASKKILL /PID %PID%
30
Ingo Kegel

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

Ваш результат будет примерно таким: enter image description here

13
cete3

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

9
khan

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

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

Решение, которое я нашел, очень просто. Используйте 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"
);
2
noblemaster

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

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

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

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

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

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

1
heikkim

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

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

start "MyProgramName" Java java-program..

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

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

taskkill /fi "MyProgramName"

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

0
elite21