pkill для java-процессов на Windows
Часто бывает нужно убить процесс java, но именно тот, который был запущен с определёнными параметрами (т.к. в системе могут быть запущено несколько java-процессов). Для этого в unix-мире есть удобная команда pkill, которая выполняет то же самое, что и команда
ps | grep glassfish | awk '{print $2}' | xargs kill
А в Windows таких удобных команд нет. Стандартная команда tasklist не умеет выводить аргументы, с которыми были запущены процессы. Зато есть входящая в JDK утилита jps, которая умеет это делать для java-процессов. Нет grep, но есть FindStr. Нет возможности распарсить вывод с помощью awk, но есть FOR /F. Итак, несмотря на скудный инструментарий, мы всё же что-то можем сделать.
Примеры использования (Нужно предварительно добавить JDK\bin в PATH):
javakill glassfish
Находит java-процесс, в JVM-опциях содержащий строку glassfish, и убивает его, если он такой один. Если же найдено несколько подходящих процессов, будет запрошено подтверждение завершения первого из них.
javakill glassfish /Q
То же самое, но в случае неоднозначности первый подходящий процесс будет завершён без запроса подтверждения.
javakill glassfish /A
Если будут найдены несколько подходящих процессов, будет запрошено подтверждение на завершение их всех.
javakill glassfish /Q /A
Будут завершены все подходящие процессы без запроса подтверждений.
0