Linux список java процессов

Список процессов Java

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

ОТВЕТЫ

Ответ 1

и посмотрите, как вы попадаете на

Ответ 2

Недавняя Java-версия оснащена инструментом «jps» для процесса обработки виртуальной машины Java

Ответ 3

является наиболее полезным. Печатает только pid и квалифицированное имя основного класса:

Ответ 4

Вы можете использовать одиночную команду pgrep (не требует использования труб и нескольких команд):

Ответ 5

Начиная с Java 7, самый простой способ и меньше подверженности ошибкам — просто использовать команду jcmd , которая является частью JDK, чтобы она работала так же на всех ОС.

Пример:

jcmd позволяет отправлять запросы диагностической команды на запущенную Java Виртуальная машина (JVM).

Ответ 6

Это приведет к возврату всех запущенных java-процессов в среде linux. Затем вы можете убить процесс, используя идентификатор процесса.

Ответ 7

Если я хочу просто перечислить java-процессы, используйте:

Ответ 8

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

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

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

Ответ 9

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

С точки зрения операционной системы имя команды процесса «java». Опция «ww» расширяет максимальные символы colum, поэтому можно grep FQN связанного класса.

Ответ 10

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

Ответ 11

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

Я знаю, это кажется ужасным, и не переносимым, и даже плохо реализованным, я согласен. Но поскольку Java фактически работает в VM, по какой-то абсурдной причине, которую я не могу понять после более чем 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 , она сделает трюк. Надеюсь, это помогло, удачи.

Ответ 12

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

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

Альтернативой для окон для отображения всех процессов является:

Но для этого потребуется разбор, чтобы сделать его более понятным.

Ответ 13

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

Ответ 14

Ответ 15

ps aux | grep java

$ ps -fea|grep -i java

Ответ 16

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

Источник

Как получить точный список запущенных процессов в Linux из приложения Java?

Я делаю приложение, и одно из требований на данный момент — уметь искать процессы других запущенных приложений и при необходимости убивать их.

Я пробовал » jps «, который поставляется с JDK, и это именно то, что мне нужно. Идентификатор процесса приложения и настоящее имя приложения. Используя это, я могу убить по идентификатору процесса, а также сопоставить по имени, какие процессы мне действительно нужно завершить, не прерывая неправильные процессы. К сожалению, не все конечные пользователи этого приложения будут иметь JDK, поэтому jps не является надежным. Мне нужен другой способ сделать это.

Я пробовал много команд «ps», которые, кажется, не работают правильно. Например, на данный момент я использую

Это не помогает мне, так как не отображает имена процессов, а также не кажется точным. Когда я запускаю свои java-приложения из терминала, а затем перезапускаю программу, запущенные приложения не меняются, когда я ожидаю увидеть добавленный дополнительный процесс.

Читайте также:  Облако для windows phone

С Java в настоящее время я использую

Есть какой-либо способ сделать это? Или каким-то образом изолировать исполняемый файл jps, чтобы я мог упаковать его в свой проект и использовать в переносном поместье?

Когда я запускаю jps из JDK, я получаю этот вывод

Когда я запускаю ps -ef с моего машинного терминала, я получаю этот вывод

Когда я запускаю ps -ef из своего Java-приложения, я получаю следующее, а идентификатор процесса 11503 нигде не видно .

Проблема заключалась в / bin / sh -c в команде. Удаление этого дало мне правильный вывод, хотя я все еще думаю, что jps — лучшее решение (jps может быть изолирован, но окончательный размер составляет

Источник

Список процессов Java

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

и посмотрите, как вы попадаете на

Недавняя Java-версия оснащена инструментом “jps” для процесса обработки виртуальной машины Java

является наиболее полезным. Печатает только pid и квалифицированное имя основного класса:

Вы можете использовать одиночную команду pgrep (не требует использования труб и нескольких команд):

Начиная с Java 7, самый простой способ и меньше подверженности ошибкам – просто использовать команду jcmd , которая является частью JDK, чтобы она работала так же на всех ОС.

Пример:

jcmd позволяет отправлять запросы диагностической команды на запущенную Java Виртуальная машина (JVM).

Это приведет к возврату всех запущенных java-процессов в среде linux. Затем вы можете убить процесс, используя идентификатор процесса.

Если я хочу просто перечислить java-процессы, используйте:

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

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

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

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

С точки зрения операционной системы имя команды процесса “java”. Опция “ww” расширяет максимальные символы colum, поэтому можно grep FQN связанного класса.

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

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

Я знаю, это кажется ужасным, и не переносимым, и даже плохо реализованным, я согласен. Но поскольку Java фактически работает в VM, по какой-то абсурдной причине, которую я не могу понять после более чем 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 , она сделает трюк. Надеюсь, это помогло, удачи.

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

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

Альтернативой для окон для отображения всех процессов является:

Но для этого потребуется разбор, чтобы сделать его более понятным.

Я использую это (хорошо на Debian 8):

alias psj=’ps —no-headers -ww -C java -o pid,user,start_time,command’

Источник

Список процессов Java

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

и посмотри, как у тебя дела

Последняя версия Java поставляется с инструментом состояния процесса виртуальной машины Java «jps»

очень полезно. Выводит только pid и квалифицированное имя основного класса:

Вы также можете использовать одну команду pgrep (не требует использования каналов и нескольких команд):

Начиная с Java 7 , самый простой и менее подверженный ошибкам способ — просто использовать команду, jcmd которая является частью JDK , чтобы она работала одинаково во всех ОС.

Пример:

jcmd позволяет отправлять запросы диагностических команд на работающую виртуальную машину Java (JVM).

Для лучшего формата вывода проверьте эту команду:

Читайте также:  Samsung scx 3205w драйвер windows 10

Это вернет все запущенные java-процессы в среде Linux. Затем вы можете убить процесс, используя идентификатор процесса.

ps aux | grep java

$ ps -fea|grep -i java

Если я хочу просто перечислить java-процессы, используйте:

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

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

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

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

Со стороны ОС имя команды процесса — «java». Параметр «ww» расширяет максимальное количество символов в столбце, поэтому можно найти FQN соответствующего класса с помощью grep.

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 ?! :).

Источник

Список процессов Linux

На сайте уже есть несколько статей про процессы Linux, в которых подробно описано как ими управлять или как завершить один или группу процессов, но это еще не все. Чтобы правильно управлять процессами и ориентироваться в них вам нужно научиться анализировать список процессов Linux, понимать что значит каждый пункт и зачем он нужен.

В этой статье мы подробно рассмотрим как посмотреть список процессов различными способами, разберем какими бывают процессы, почему так происходит и что с этим делать.

Список процессов в Linux

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

  • Процесс — если говорить простыми словами, это программа и её данные, загруженные в память компьютера;
  • Дочерний процесс — процессы могут запускать другие процессы для выполнения параллельных задач или других целей такие процессы называются дочерними. Для них выделяется отдельная область в памяти;
  • Поток — поток отличается от процесса тем, что использует ту же память, данные и дескрипторы файлов, что и процесс, в котором он был создан.

1. Утилита ps

Самый простой способ посмотреть список процессов, запущенных в текущей командой оболочке, использовать команду ps без параметров:

Но вряд-ли вас интересует именно это. Чтобы посмотреть все процессы, добавьте опцию -e, а для максимально подробной информации — опцию -F:

Вот значение основных колонок в выводе утилиты:

  • UID — имя пользователя, от имени которого работает процесс;
  • PID — идентификатор пользователя;
  • PPID — идентификатор родительского процесса пользователя;
  • C — расходование ресурсов процессора, в процентах;
  • SZ — размер процесса;
  • RSS — реальный размер процесса в памяти;
  • PSR — ядро процессора, на котором выполняется процесс;
  • STIME — время, когда процесс был запущен;
  • TTY — если процесс привязан к терминалу, то здесь будет выведен его номер;
  • TIME — общее время выполнения процесса (user + system);
  • CMD — команда, которой был запущен процесс, если программа не может прочитать аргументы процесса, он будет выведен в квадратных скобках;

Чтобы посмотреть список процессов в виде дерева, и понимать какой процесс имеет какие дочерние процессы, выполните команду:

Для просмотра списка процессов с потоками используйте опцию -L:

Здесь появятся ещё две дополнительных колонки:

  • LWP — Это сокращение от LightWeight Proccess. Идентификатор потока;
  • NLWP — количество потоков у этого процесса.

Чтобы посмотреть список процессов определенного пользователя, например, sergiy используйте опцию -u:

Теперь давайте перейдём к другим, более интересным, интерактивным утилитам.

Читайте также:  Microsoft net framework не устанавливается windows 10

2. Утилита top

Утилита top не поставляется вместе с системой, поэтому вам придется её установить. Для этого в Ubuntu выполните:

sudo apt install top

Программа позволяет интерактивно просматривать список запущенных процессов Linux. Чтобы вывести список процессов Linux выполните команду:

Колонки, которые выводит программа очень похожи на ps:

  • PID — идентификатор процесса;
  • USER — имя пользователя, от имени которого выполняется процесс;
  • PR — приоритет планировщика, установленный для процесса;
  • NI — рекомендуемый приоритет процесса. Это значение можно менять, может не совпадать с реальным приоритетом планировщика;
  • VIRT — всё, что находится в памяти, используется или зарезервировано для использования;
  • RES — всё, что находится в оперативной памяти и относится к процессу. Расшифровывается как Resident Memory Size, указывается в килобайтах;
  • SHR — часть памяти из RES, которую занимают ресурсы, доступные для использования другим процессам. Расшифровывается — Shared Memory Size.
  • S — состояние процесса: D — ожидает завершения операции, R — запущен, S — спит, T — остановлен, t — остановлен отладчиком, Z — зомби;
  • %CPU — процент использования ресурсов процессора;
  • %MEM — процент использования ресурсов оперативной памяти на основе колонки RES;
  • TIME — обще процессорное время, которое процесс использовал с момента запуска;
  • COMAND — команда, с помощью которой был запущен процесс.

Для того чтобы сделать вывод программы цветным, нажмите Z:

Чтобы вывести дерево процессов Linux нажмите сочетание клавиш Shift+V:

Для отображения потоков нажмите Shift + H:

Если вам недостаточно стандартных полей с информацией о процессах, вы можете нажать Shift + F и выбрать дополнительные поля, которые надо отображать. Для выбора или удаления поля используйте пробел:

3. Утилита htop

Это ещё более мощная утилита для просмотра запущенных процессов в Linux. Пользоваться ею намного удобнее. Здесь поддерживаются не только горячие клавиши, но и управление мышью. А ещё она выводит всё в цвете, поэтому смотреть на данные намного приятнее. Для установки программы выполните:

sudo apt install htop

Для того чтобы запустить выполните в терминале:

Колонки, которые вы увидите в выводе программы, аналогичны тем, что доступны в top, поэтому я не буду рассматривать их здесь отдельно. Для настройки выводимых данных нажмите кнопку F2, затем перейдите в раздел Display Options:

Здесь надо отметить Tree view для вывода списка процессов в виде дерева, а также снять отметки с пунктов Hide threads. для отображения потоков. Здесь есть как потоки пространства пользователя userland process threads, так и потоки пространства ядра — kernel threads. Теперь всё это будет отображаться:

Для того чтобы настроить какие колонки будут отображаться используйте пункт меню Columns:

Тут вы можете выбрать какие колонки отображать, а какие нет, а также можете настроить их порядок.

4. Программа Gnome Monitor

Вы можете смотреть запущенные процессы не только в терминале, но и в графическом интерфейсе. Для этого можно использовать утилиту Gnome Monitor. У неё намного меньше возможностей, по сравнению даже с ps, но зато у неё есть графический интерфейс. Вы можете запустить программу из главного меню системы:

По умолчанию утилита отображает только процессы текущего пользователя. Если вы хотите получить все процессы кликните по иконке бутерброда и выберите Все процессы:

Теперь программа отображает все запущенные процессы Linux в системе. Здесь вы можете выполнять поиск по процессам, завершать их и многое другое. Но потоков и дерева процессов программа не показывает.

5. Утилита atop

Эта программа тоже позволяет посмотреть процессы в Linux , но немного в другом ключе. Утилиту больше интересует сколько тот или иной процесс потребляет ресурсов системы. Утилита даже может показывать потребление процессами пропускной способности диска и сети, но для этого ей необходим специальный патч ядра. Для установки программы в Ubuntu выполните:

sudo apt install atop

Затем запустите её:

Вот основные колонки, которые выводит утилита и их значения:

  • PID — идентификатор процесса;
  • CID — идентификатор контейнера, используется для контейнеров Docker;
  • SYSCPU — время, потраченное процессом на выполнение в пространстве ядра;
  • USRCPU — время, потраченное процессом на выполнение в пространстве пользователя;
  • VGROW — увеличение использования памяти колонки VIRT за последний период;
  • RGROW — увеличение использования памяти колонки RSS за последний период;
  • ST — статус процесса, N — новый, E — завершенный, S и С — процесс завершен принудительно с помощью сигнала;
  • EXC — код выхода или код сигнала, которым был завершен процесс;
  • THR — общее количество потоков в этом процессе;
  • S — состояние процесса, аналогично описанному для top;
  • CPUNR — номер ядра процессора, на котором запущен основной поток процесса;
  • CPU — процент использования ресурсов процессора;
  • CMD — команда, которой была запущена программа;
  • MEM — процент использования памяти;

Для того чтобы включить отображение потоков процесса нажмите y:

Для просмотра информации о памяти нажмите m, если хотите вернутся обратно, нажмите g:

Выводы

В этой статье мы разобрали самые основные способы посмотреть список процессов в Linux, как видите есть простые способы, но есть и более сложные и информативные. Какими способами вы пользуетесь чаще всего? Напишите в комментариях!

Источник

Оцените статью