У меня есть много исполняемых файлов jar, которые я запускаю на сервере Windows. Когда-нибудь мне нужно перераспределить некоторые из приложений. Для этого мне нужно сначала остановить существующий процесс, а затем запустить новый процесс. В среде linux я использую pkill
, чтобы убить процесс, основанный на имени файла jar. Но в окнах все java-процессы будут называться только «java.exe». Мне нужно написать командный файл, чтобы выполнить эти операции запуска и остановки. Как я могу убить файл jar на основе имени.Убивать java-процесс в окнах программно
Предположим, что мой файл jar имеет имя common-api.jar
. Выполнение команды jps -ml | find "common"
даст результат как
6968 синфазного api.jar
Я могу убить процесс по taskkill /f /PID 6968
Но как я могу извлечь идентификатор процесса из первого команду и передать ее команде taskkill
?
Если вы «убиваете процессы», а не закрываете службы, вы делаете это неправильно. Сделайте свою программу совместимой с обычной архитектурой обслуживания на обеих платформах. Затем вы можете использовать обычные команды ОС для остановки и запуска служб. – jpmc26
Вы можете сделать это с помощью vbscript с списком Win32_Process в WMI – Hackoo