Как найти идентификатор процесса работающего процесса 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"
);
- Откройте Git Bash
- Тип
ps -ef | grep java
- Найди
pid
запуска jdk 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-программа будет убита только. Отдых будет незатронут.