Как я могу перечислить все процессы Java в bash? Мне нужна командная строка. Я знаю, что есть команда, ps
но не знаю, какие параметры мне нужно использовать.
linux
bash
unix
command-line
Яцек Коралик
источник
источник
ps
то сначала попробуйтеman ps
,info ps
и узнайте об этом в Интернете.Ответы:
пытаться:
и посмотри, как у тебя дела
источник
Последняя версия Java поставляется с инструментом состояния процесса виртуальной машины Java "jps"
http://download.oracle.com/javase/1.5.0/docs/tooldocs/share/jps.html
Например,
источник
очень полезно. Выводит только pid и квалифицированное имя основного класса:
источник
Вы также можете использовать одну команду pgrep (не требует использования каналов и нескольких команд):
источник
Начиная с Java 7 , самый простой и менее подверженный ошибкам способ - просто использовать команду,
jcmd
которая является частью JDK , чтобы она работала одинаково во всех ОС.Пример:
Подробнее о том, как пользоваться
jcmd
.Смотрите также Utility
jcmd
источник
jps
Для лучшего формата вывода проверьте эту команду:
источник
Это вернет все запущенные java-процессы в среде Linux. Затем вы можете убить процесс, используя идентификатор процесса.
источник
ps aux | grep java
или
$ ps -fea|grep -i java
источник
Если я хочу просто перечислить java-процессы, используйте:
источник
источник
grep
процесс?Вышеуказанное будет
(кстати, этот пример не самый эффективный, но его легко запомнить);)
вы можете передать указанное выше другим командам, например:
и т.д...
источник
Когда я хочу узнать, выполняется ли определенный класс Java, я использую следующую командную строку:
Со стороны ОС имя команды процесса - «java». Параметр «ww» расширяет максимальное количество символов в столбце, поэтому можно найти FQN соответствующего класса с помощью grep.
источник
$ top
просто выдает «java» в качестве команды, что не так уж и полезно при попытке выяснить, какой процесс загружает процессор.$ ps ww -fC java
предоставляет недостающие части головоломки.jps & jcmd не показывал мне никаких результатов, когда я пробовал использовать openjdk-1.8 в redhat linux. Но даже если он это сделал, он показывает только процессы под текущим пользователем, что не работает в моем случае. В итоге я использовал ps | grep, но путь к классам для некоторых java-приложений может быть очень длинным, что делает результаты неразборчивыми, поэтому я использовал sed для его удаления. Это все еще немного грубо, но удаляет все, кроме: PID, User, java-class / jar, args.
Результаты выглядят примерно так:
Альтернативой в Windows для перечисления всех процессов является:
Но это потребует некоторого анализа, чтобы сделать его более разборчивым.
источник
Есть много способов сделать это. Вы можете использовать
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
, она сделает свое дело. Надеюсь, это помогло, удачи.источник
Это лучше, так как он покажет вам только активные процессы, не включая эту команду, которая также имеет строку java,
[]
которая делает трюкисточник
Я использую это (хорошо в Debian 8):
alias psj='ps --no-headers -ww -C java -o pid,user,start_time,command'
источник
Чтобы узнать список Java, запущенных на Linux-машине. ps -e | grep java
источник