Как посмотреть java процессы на linux
Список процессов Java
Как я могу перечислить все процессы Java в bash? Мне нужна командная строка. Я знаю, что есть команда, ps но не знаю, какие параметры мне нужно использовать.
и посмотри, как у тебя дела
Последняя версия Java поставляется с инструментом состояния процесса виртуальной машины Java «jps»
очень полезно. Выводит только pid и квалифицированное имя основного класса:
Вы также можете использовать одну команду pgrep (не требует использования каналов и нескольких команд):
Пример:
jcmd позволяет отправлять запросы диагностических команд на работающую виртуальную машину Java (JVM).
Для лучшего формата вывода проверьте эту команду:
Если я хочу просто перечислить java-процессы, используйте:
(кстати, этот пример не самый эффективный, но его легко запомнить);)
вы можете передать указанное выше другим командам, например:
Когда я хочу узнать, выполняется ли определенный класс Java, я использую следующую командную строку:
jps & jcmd не показывал мне никаких результатов, когда я пробовал использовать openjdk-1.8 в redhat linux. Но даже если он это сделал, он показывает только процессы под текущим пользователем, что не работает в моем случае. В итоге я использовал ps | grep, но путь к классам для некоторых java-приложений может быть очень длинным, что делает результаты неразборчивыми, поэтому я использовал sed для его удаления. Это все еще немного грубо, но удаляет все, кроме: PID, User, java-class / jar, args.
Результаты выглядят примерно так:
Альтернативой в Windows для перечисления всех процессов является:
Но это потребует некоторого анализа, чтобы сделать его более разборчивым.
Как составить список запущенных процессов в Linux
Каждое приложение, которое вы используете, или команда, которую вы запускаете в своей системе Linux, создает процесс или задачу. Как системный администратор, вам нужно будет управлять процессами для обеспечения оптимальной производительности системы.
В этом руководстве мы рассмотрим различные команды Linux, которые вы можете использовать для составления списка текущих запущенных процессов и управления ими.
Процессы в Linux
Процессы в Linux запускаются каждый раз, когда вы запускаете приложение или выполняете команду. В то время как каждая команда создает один процесс, приложения создают и запускают несколько процессов для разных задач.
По умолчанию каждый новый процесс запускается как foreground процесс. Это означает, что он должен завершиться, прежде чем можно будет начать новый процесс. Запущенные процессы в background позволяет одновременно выполнять другие задачи.
Примечание: Узнайте больше о завершении процессов Linux в нашем руководстве по уничтожению процессов в Linux.
Список запущенных процессов в Linux
Список запущенных процессов в Linux с помощью команды ps
В ps Команда Linux создает снимок запущенных в данный момент процессов. В отличие от других команд в этом списке, ps представляет вывод в виде статического списка, не обновляемого в реальном времени.
В ps команда использует следующий синтаксис:
Часто используемый ps параметры команды включают:
Примечание: Ознакомьтесь с полным списком ps параметры команды с помощью man ps.
Запуск ps команда без каких-либо параметров дает результат, подобный следующему:
Вывод по умолчанию включает следующие категории:
Новые категории расширенного вывода включают:
Чтобы отобразить запущенные процессы в иерархическом виде, введите:
Отфильтруйте список процессов по пользователю с помощью:
Например, отображение списка процессов, запущенных пользователем с именем phoenixnap:
Список запущенных процессов в Linux с помощью команды top
В top команда отображает список запущенных процессов в порядке уменьшения загрузки ЦП. Это означает, что наиболее ресурсоемкие процессы появляются вверху списка:
Выход top команды обновляются в реальном времени с трехсекундной частотой обновления по умолчанию. В top Выходные данные команды содержат следующие категории:
В то время как top команда запущена, используйте следующие параметры для взаимодействия с ней или изменения формата вывода:
Примечание: Варианты взаимодействия с top команда чувствительна к регистру. Убедитесь, что вы сначала отключили Caps Lock.
Список запущенных процессов в Linux с помощью команды htop
В htop команда предлагает тот же результат, что и top команда, но в более легком для понимания и удобном для пользователя виде.
Поскольку большинство дистрибутивов Linux не включают эту команду, установите ее с помощью:
С помощью htop команда предоставляет следующий вывод:
Используйте следующие клавиши для взаимодействия с htop команда:
Список запущенных процессов в Linux с помощью команды atop
В atop команда обеспечивает более полный обзор запущенных процессов по сравнению с Топ команда. Начните с установки atop команда с:
В atop команда создает вывод, похожий на:
Раздел заголовка выходных данных команды предоставляет обзор системных ресурсов, включая статистику, связанную с процессами и производительностью, а также использование памяти, диска и сети.
В нижнем разделе перечислены запущенные в данный момент процессы и содержатся следующие категории:
С помощью atop команда со следующими параметрами изменяет формат вывода:
Используйте следующие флаги для взаимодействия с atop команда:
Найдите идентификаторы процессов с помощью команды pgrep
С помощью pgrep команда позволяет искать конкретный процесс. В pgrep команда использует следующий синтаксис:
Например, используйте следующую команду для поиска Firefox процесс:
В выводе команды указан PID процесса:
Используя этот PID с ps команда позволяет получить больше информации о процессе. В этом примере использование PID 1439 предоставляет информацию о Firefox процесс:
Используйте доступные параметры команды, чтобы настроить вывод и поведение команды.
Список процессов Java
и посмотрите, как вы попадаете на
Недавняя Java-версия оснащена инструментом “jps” для процесса обработки виртуальной машины Java
является наиболее полезным. Печатает только pid и квалифицированное имя основного класса:
Вы можете использовать одиночную команду pgrep (не требует использования труб и нескольких команд):
Начиная с Java 7, самый простой способ и меньше подверженности ошибкам – просто использовать команду jcmd , которая является частью JDK, чтобы она работала так же на всех ОС.
Пример:
jcmd позволяет отправлять запросы диагностической команды на запущенную Java Виртуальная машина (JVM).
Если я хочу просто перечислить java-процессы, используйте:
(Кстати, этот пример не эффективен, но просто запоминается);)
вы можете передать вышеуказанные команды другим командам, например:
Когда я хочу узнать, выполняется ли какой-либо Java-класс, я использую следующую командную строку:
С точки зрения операционной системы имя команды процесса “java”. Опция “ww” расширяет максимальные символы colum, поэтому можно grep FQN связанного класса.
Я знаю, это кажется ужасным, и не переносимым, и даже плохо реализованным, я согласен. Но поскольку Java фактически работает в VM, по какой-то абсурдной причине, которую я не могу понять после более чем 15 лет работы JDK, почему невозможно увидеть вещи вне пространства JVM, это действительно смешно с вами думаю об этом. Вы можете делать все остальное, даже fork и join дочерние процессы (это был ужасный способ многозадачности, когда мир не знал о потоках или pthreads, что, черт возьми, что происходит с Java. ).
Это даст огромную дискуссию, которую я знаю, но в любом случае есть очень хороший API, который я уже использовал в своих проектах, и он достаточно стабилен (это OSS, поэтому вам все равно нужно подчеркнуть каждую используемую вами версию, прежде чем доверять API ): https://github.com/jezhumble/javasysmon
jps и jcmd не показывали мне никаких результатов, когда я пробовал это, используя openjdk-1.8 на redhat linux. Но даже если бы это было сделано, это показывает только процессы под текущим пользователем, которые не работают в моем случае. Использование ps | grep – это то, что я закончил, но путь класса для некоторых приложений Java может быть чрезвычайно длинным, что делает результаты неразборчивыми, поэтому я использовал sed для его удаления. Это немного грубо, но удаляет все, кроме: PID, User, java-class/jar, args.
Результаты выглядят примерно так:
Альтернативой для окон для отображения всех процессов является:
Но для этого потребуется разбор, чтобы сделать его более понятным.
Список процессов Linux
На сайте уже есть несколько статей про процессы Linux, в которых подробно описано как ими управлять или как завершить один или группу процессов, но это еще не все. Чтобы правильно управлять процессами и ориентироваться в них вам нужно научиться анализировать список процессов Linux, понимать что значит каждый пункт и зачем он нужен.
В этой статье мы подробно рассмотрим как посмотреть список процессов различными способами, разберем какими бывают процессы, почему так происходит и что с этим делать.
Список процессов в Linux
Я не буду подробно рассказывать про каждую команду, которую можно применять для просмотра списка запущенных процессов, вместо этого мы пройдёмся по основным утилитам для решения этой задачи, рассмотрим как посмотреть список потоков процесса, вывести процессы, которые выполняются на определённом ядре, а также как найти скрытые процессы. Но сначала надо разобраться с терминами.
1. Утилита ps
Самый простой способ посмотреть список процессов, запущенных в текущей командой оболочке, использовать команду ps без параметров:
Вот значение основных колонок в выводе утилиты:
Чтобы посмотреть список процессов в виде дерева, и понимать какой процесс имеет какие дочерние процессы, выполните команду:
Для просмотра списка процессов с потоками используйте опцию -L:
Здесь появятся ещё две дополнительных колонки:
Чтобы посмотреть список процессов определенного пользователя, например, sergiy используйте опцию -u:
Теперь давайте перейдём к другим, более интересным, интерактивным утилитам.
2. Утилита top
Утилита top не поставляется вместе с системой, поэтому вам придется её установить. Для этого в Ubuntu выполните:
sudo apt install top
Программа позволяет интерактивно просматривать список запущенных процессов Linux. Чтобы вывести список процессов Linux выполните команду:
Колонки, которые выводит программа очень похожи на ps:
Для того чтобы сделать вывод программы цветным, нажмите Z:
Чтобы вывести дерево процессов Linux нажмите сочетание клавиш Shift+V:
Для отображения потоков нажмите Shift + H:
Если вам недостаточно стандартных полей с информацией о процессах, вы можете нажать Shift + F и выбрать дополнительные поля, которые надо отображать. Для выбора или удаления поля используйте пробел:
3. Утилита htop
Это ещё более мощная утилита для просмотра запущенных процессов в Linux. Пользоваться ею намного удобнее. Здесь поддерживаются не только горячие клавиши, но и управление мышью. А ещё она выводит всё в цвете, поэтому смотреть на данные намного приятнее. Для установки программы выполните:
sudo apt install htop
Для того чтобы запустить выполните в терминале:
Колонки, которые вы увидите в выводе программы, аналогичны тем, что доступны в top, поэтому я не буду рассматривать их здесь отдельно. Для настройки выводимых данных нажмите кнопку F2, затем перейдите в раздел Display Options:
Для того чтобы настроить какие колонки будут отображаться используйте пункт меню Columns:
Тут вы можете выбрать какие колонки отображать, а какие нет, а также можете настроить их порядок.
4. Программа Gnome Monitor
Вы можете смотреть запущенные процессы не только в терминале, но и в графическом интерфейсе. Для этого можно использовать утилиту Gnome Monitor. У неё намного меньше возможностей, по сравнению даже с ps, но зато у неё есть графический интерфейс. Вы можете запустить программу из главного меню системы:
По умолчанию утилита отображает только процессы текущего пользователя. Если вы хотите получить все процессы кликните по иконке бутерброда и выберите Все процессы:
Теперь программа отображает все запущенные процессы Linux в системе. Здесь вы можете выполнять поиск по процессам, завершать их и многое другое. Но потоков и дерева процессов программа не показывает.
5. Утилита atop
sudo apt install atop
Затем запустите её:
Вот основные колонки, которые выводит утилита и их значения:
Для того чтобы включить отображение потоков процесса нажмите y:
Для просмотра информации о памяти нажмите m, если хотите вернутся обратно, нажмите g:
Выводы
В этой статье мы разобрали самые основные способы посмотреть список процессов в Linux, как видите есть простые способы, но есть и более сложные и информативные. Какими способами вы пользуетесь чаще всего? Напишите в комментариях!
List of Java processes
How can I list all Java processes in bash? I need an command line. I know there is command ps but I don’t know what parameters I need to use.
18 Answers 18
and see how you get on
Recent Java comes with Java Virtual Machine Process Status Tool «jps»
is most useful. Prints just pid and qualified main class name:
Starting from Java 7, the simplest way and less error prone is to simply use the command jcmd that is part of the JDK such that it will work the same way on all OS.
Example:
jcmd allows to send diagnostic command requests to a running Java Virtual Machine (JVM).
You can use single command pgrep as well (doesn’t require you to use pipes and multiple commands):
For better output format check this command:
This will return all the running java processes in linux environment. Then you can kill the process using the process ID.
If I want simply list java processes, use:
(btw, this example is not the effective one, but simple to remember) 😉
you can pipe the above to another commands, for example:
When I want to know if a certain Java class is getting executed, I use the following command line:
From the OS side view, the process’s command name is «java». The «ww» option widens the colum’s maximum characters, so it’s possible to grep the FQN of the related class.
jps & jcmd wasn’t showing me any results when I tried it using using openjdk-1.8 on redhat linux. But even if it did it only shows processes under the current user which doesn’t work in my case. Using the ps|grep is what I ended up doing but the class path for some java apps can be extremely long which makes results illegible so I used sed to remove it. This is a bit rough still but removes everything except: PID, User, java-class/jar, args.
Results look something like:
An alternative on windows to list all processes is:
But that is going to need some parsing to make it more legible.
I know, this seems horrible, and non portable, and even poorly implemented, I agree. But because Java actually runs in a VM, for some absurd reason that I can’t really figure out after more then 15 years working the JDK, is why it isn’t possible to see things outside the JVM space, it’s really ridiculous with you think about it. You can do everything else, even fork and join child processes (those were an horrible way of multitasking when the world didn’t know about threads or pthreads, what a hell! what’s going in on with Java?! :).