Как найти и уничтожить все процессы Java, чтобы избежать перезагрузки ОС, если Java будет установлена ​​без вывода сообщений?

24847
030

Вступление

Во избежание перезагрузки или появления всплывающего окна, которое запрашивает перезагрузку ОС, если более новая версия Java будет установлена ​​без вывода сообщений, все процессы, использующие Java, должны быть уничтожены.

Просто убейте java.exe, выполнив следующую команду:

taskkill /im java.exe /f

не решает проблему, так как некоторые процессы будут продолжать использовать Java, например, postgresql JDBC, веб-браузеры, tomcat, eclipse.

Если все процессы, использующие Java, будут уничтожены до того, как Java будет установлена ​​без вывода сообщений, ОС не будет перезагружена.

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

Вопрос

Как найти все процессы, использующие Java, и уничтожить их все, чтобы избежать перезагрузки ОС или появления всплывающего окна, которое запрашивает перезагрузку системы, если Java будет установлена ​​без вывода сообщений?

2
Одним из способов может быть получение списка всех процессов (запущенных процессов) и расшифровка, основаны ли они на Java, а затем уничтожение основанных на Java. Таким образом, вам нужна команда, которая определяет, является ли процесс на основе Java. Я счастлив, что у меня нет java-программ для тестирования, но, возможно, этот http://gnuwin32.sourceforge.net/packages/file.htm покажет, основан ли процесс на java. в противном случае вам нужен другой метод. barlop 9 лет назад 1
Программа была установлена. `file --help` был выполнен, и появляется ряд команд. Какие из них следует использовать, чтобы определить, какие процессы используют Java? `file / path / to / java` приводит к` C: \ Program Files \ Java \ jdk1.8.0_05 \ bin \ java.exe; PE32 + исполняемый файл для MS Windows (консоль) Mono / .Net Assembly`. 030 9 лет назад 0
Это означает, что Java, exe не написано на Java. И это имеет смысл, что java.exe не будет написан на java. barlop 9 лет назад 0
Тот же результат для `Apache Directory Studio` (C: \ Program Files \ Apache Directory Studio \ Apache Directory Studio.exe; исполняемый файл PE32 + для сборок MS Windows (GUI) Mono / .Net) и` Tomcat` (C: \ Program Files \ Apache Software Foundation \ apache-tomcat-8.0.8 \ bin \ tomcat8.exe; исполняемый файл PE32 + для сборок MS Windows (консоль) Mono / .Net), которые не основаны на Java и не используют Java, в то время как для запуска этих программ требуется Java. , 030 9 лет назад 0
Может быть, они принципиально не Java-приложения. http://www.coderanch.com/t/477457/vc/Isn-Main-Parts-Eclipse-Written "eclipse.exe - это приложение для Windows, в котором размещается JVM через JNI. На самом деле то же самое можно сказать и о Java. exe, javac.exe и большинство других * .exe файлов в java_home / bin! " «Это может пролить некоторый свет: http://java.sun.com/j2se/1.5.0/docs/guide/jni/spec/invocation.html#wp9502» Возможно, именно поэтому он, очевидно, не использует java.exe Тем не менее, я заметил, что вы обнаружили, что в Eclipse использовалась Java ... Так что я не знаю, что там происходит. Почему это отличается для Eclipse и Apache DS barlop 9 лет назад 0
Возможно, вы могли бы спросить в stackoverflow, если eclipse и apache ds используют java принципиально по-другому, так что команда file видит их по-разному. И в чем разница в том, как можно использовать java, чтобы вызвать это различие с помощью команды file barlop 9 лет назад 1
http://stackoverflow.com/questions/24228467/gnuwins-file-command-indicates-programs-are-net-based-while-these-require-jav 030 9 лет назад 0
Давайте [продолжим это обсуждение в чате] (http://chat.stackexchange.com/rooms/15117/discussion-between-barlop-and-utrecht). barlop 9 лет назад 0

1 ответ на вопрос

4
Zdzisiek

Как убить процесс зависит от того, какую ОС вы используете. Но чтобы найти процессы Java, вы можете использовать jcmd -lкоманду. Эта команда выводит список всех процессов Java на локальном компьютере.

Эта команда указывает, что затмение использует Java. Когда Eclipse был убит, команда указывает, что ни одна из программ не использует java, в то время как firefox работает и apacheds все еще прослушивает порт 10389. 030 9 лет назад 0
Эта команда указывает, что некоторые процессы используют java. Он не может показать `все процессы, которые используют java`. 030 9 лет назад 0
Это потому, что `jcmd` показывает процессы, работающие в данный момент. Firefox запускает Java только для запуска апплета и затем не использует Java после этого. Я не знаю ни одного универсального метода, чтобы найти все процессы, которые иногда используют Java. Но процесс, который не использует Java в этот момент, не должен блокировать установку новой версии Java (но я не проверяю это). Zdzisiek 9 лет назад 0