Список процессов Java - PullRequest
97 голосов
/ 08 июня 2011

Как я могу перечислить все процессы Java в bash?Мне нужна командная строкаЯ знаю, что есть команда ps, но я не знаю, какие параметры мне нужно использовать.

Ответы [ 17 ]

3 голосов
/ 15 октября 2014

Когда я хочу узнать, выполняется ли определенный класс Java, я использую следующую командную строку:

ps ww -f -C java | grep "fully.qualified.name.of.class"

На виде сбоку операционной системы имя команды процесса - "java".Опция "ww" расширяет максимальное количество символов в столбце, поэтому можно получить полное имя связанного класса.

2 голосов
/ 16 февраля 2017

jps & jcmd не показывали мне никаких результатов, когда я попробовал его, используя openjdk-1.8 на redhat linux. Но даже если он это сделал, он показывает только процессы под текущим пользователем, который не работает в моем случае. В конечном итоге я использовал ps | grep, но путь к классам для некоторых java-приложений может быть очень длинным, что делает результаты неразборчивыми, поэтому я использовал sed для его удаления. Это немного грубовато, но удаляет все, кроме: PID, User, java-class / jar, args.

ps -o pid,user,cmd -C java | sed -e 's/\([0-9]\+ *[^ ]*\) *[^ ]* *\([^$]*\)/\1 \2/' -e 's/-c[^ ]* [^ ]* \|-[^ ]* //g'

Результаты выглядят примерно так:

  PID USER     CMD
11251 userb org.apache.zookeeper.server.quorum.QuorumPeerMain ../config/zookeeper.properties
19574 userb com.intellij.idea.Main
28807 root org.apache.nifi.bootstrap.RunNiFi run
28829 root org.apache.nifi.NiFi

Альтернатива в Windows для перечисления всех процессов:

WMIC path win32_process where "Caption='java.exe'" get ProcessId,Commandline

Но для его разборчивости потребуется некоторый анализ.

2 голосов
/ 08 июня 2011
ps axuwww | grep java | grep -v grep

Выше будет

  • покажет вам все процессы с длинными строками (arg: www)
  • фильтр (grep) только строки, содержащие слово java, и
  • отфильтровать строку "grep java":)

(кстати, этот пример не эффективный, но простой для запоминания);)

Вы можете передать вышеперечисленное другим командам, например:

ps axuwww | grep java | grep -v grep | sed '.....'  | while read something
do
    something_another $something
done

и т.д ...

1 голос
/ 13 июня 2017
 ps -eaf | grep [j]ava

Это лучше, так как он покажет вам только активные процессы, не включая эту команду, которая также получила строку java, которую [] делает свое дело

1 голос
/ 04 сентября 2015

Есть много способов сделать это.Вы можете использовать java.lang.ProcessBuilder и "pgrep", чтобы получить идентификатор процесса (PID) с чем-то вроде: pgrep -fl java | awk {'print $1'}.Или, если вы работаете в Linux, вы можете запросить каталог /proc.

Я знаю, это кажется ужасным, непереносимым и даже плохо реализованным, я согласен.Но поскольку Java на самом деле работает в виртуальной машине, по какой-то абсурдной причине, которую я не могу понять после более чем 15-летнего опыта работы с JDK, по этой причине невозможно увидеть вещи вне пространства JVM, это действительно смешно с вамидумаю об этом.Вы можете делать все остальное, даже fork и join дочерние процессы (это был ужасный способ многозадачности, когда мир не знал о потоков или pthreads , что зачерт возьми! что происходит с Java ?! :).

Это даст мне обширную дискуссию, которую я знаю, но в любом случае, есть очень хороший API, который я уже использовал в своих проектах, и он достаточно стабилен ( это OSS, так что вам все равно нужно подвергать стресс-тестированию каждую версию, которую выиспользуйте, прежде чем по-настоящему доверять API ): https://github.com/jezhumble/javasysmon

JavaDoc: http://jezhumble.github.io/javasysmon/, найдите класс com.jezhumble.javasysmon.OsProcess, она сделает свое дело.Надеюсь, это помогло, удачи.

0 голосов
/ 04 апреля 2016

Я использую это (хорошо для Debian 8): alias psj='ps --no-headers -ww -C java -o pid,user,start_time,command'

0 голосов
/ 02 мая 2015

Чтобы узнать список java, запущенных на машине linux.ps -e |grep java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...