Моя машина продолжает запускать процессы с помощью команды «java» (она указана в столбце «команда» вверху), которая продолжает поглощать все мои ресурсы в течение нескольких секунд, а затем исчезает, через несколько секунд запускается новый, с другим PID.
Я хочу знать, что запускает эти процессы Java.
Я получил некоторую информацию от выполнения top -> c, которая показывает команду полного процесса java:
11470 neil 20 0 4616088 2.134g 19156 S 121.9 57.1 0: 04.20 /opt/jdk-11.0.1/ bin / java -Xms1g -Xmx1g -XX: + UseConcMarkSweepGC -XX: CMSInitiatingOccupancyFr +
Однако для меня это ничего не значит. Не знаю, поможет ли это.
Другие ответы и вещи, которые я уже пробовал:
Я видел этот ответ Как я могу найти источник процесса и остановить его навсегда? который упоминает поиск каталога proc / PID. Несколько других подобных вопросов дают этот совет. Но это не помогает мне, так как PID постоянно меняется.
Я пробовал ps aux | grep java
, но это показывает только сам grep:
neil~$ ps aux | grep java
neil 8539 0.0 0.0 14224 928 pts/19 S+ 22:20 0:00 grep --color=auto java
Я пробовал killall Java
И это действительно убивает текущий PID, но затем через несколько секунд следующий начинается ...
Первоначально я думал, что это из-за того, что я установил Cisco AnyConnect (см. Справка по удалению стороннего программного обеспечения ). Причины, по которым я предположил, что это: а) проблема возникла, когда я установил AnyConnect и б) когда я смог убить процесс java до его исчезновения, единственной уязвимой программой, которую я мог видеть, был AnyConnect, который прекратил рендеринг большей части пользовательского интерфейса , Теперь я не уверен, потому что я удалил AnyConnect, и проблема остается.
Вы можете попробовать использовать команду pstree -p
, чтобы получить информацию предка о процессах Java, которые вы пытаетесь отследить. Это выведет ASCII-описание дерева процессов, начинающегося с init, а также PID для этих процессов и может дать вам информацию о родительском процессе, который продолжает запускать java.
Команда Java усекается с помощью top . Вы можете попробовать
ps auf | grep java
Для перечисления всех связанных процессов. Полная команда может дать вам некоторые идеи. Кстати, команда устанавливает максимальный размер кучи в 1 Гб, поэтому она не должна по крайней мере занимать всю вашу память, если она не порождает много процессов
Команда ps auxf
из консоли предоставит вам простое «древовидное» представление процессов. Просто убей родителя.
Или в вашем случае вам лучше найти процесс до Java: с ps auxf | grep java -B11
Я бы посоветовал посмотреть, предоставит ли утилита pspy
(из https://github.com/DominicBreuker/pspy ) дополнительную информацию о недолговечных процессах и файлах, которые они пытаются доступ. Если это произойдет, это может позволить вам определить, что их создает.