Я думаю, что для Windows Process Explorer показывает все потоки процесса.
Существует ли аналогичная утилита командной строки для Linux, которая может показать мне подробности обо всех потоках, которые порождает конкретный процесс?
Я думаю, что я должен был сделать себя более ясным. Я не хочу видеть иерархию процесса, но список всех потоков, порожденных конкретным процессом
Смотрите этот скриншот
Как это может быть достигнуто в Linux? Спасибо!
command-line
shell
process
Lazer
источник
источник
Ответы:
Классический инструмент
top
показывает процессы по умолчанию, но может быть показан показ потоков сH
нажатием клавиши или параметром-H
командной строки. Существует также htop , который похож наtop
прокрутку и цвета; по умолчанию отображаются все потоки (но это можно отключить).ps
также есть несколько вариантов отображения тем, особенноH
и-L
.Существуют также инструменты с графическим интерфейсом, которые могут отображать информацию о потоках, например, qps (простая оболочка для графического интерфейса пользователя
ps
) или conky (системный монитор с большим количеством параметров конфигурации).Для каждого процесса доступно много информации о том,
/proc/12345
где12345
находится идентификатор процесса. Информация о каждом потоке доступна/proc/12345/task/67890
там, где67890
находится идентификатор потока ядра. Здесьps
,top
а также другие инструменты получают информацию.источник
htop
кажется, не показывает мне темы. Они упоминаютH
ключ как способ переключения между отображением и скрытием потоков, но он все еще работает как ключ справки ...h
для справки, верхний регистр,H
чтобы показать / скрыть темы.Перечисление потоков под Linux
Текущие дают ответы
Я хотел бы прояснить, что каждый ответ здесь предоставляет вам именно то, что вы указали, список всех потоков, связанных с процессом, это может быть неочевидным,
htop
поскольку по умолчанию в нем перечислены все потоки в системе, не только процесс, ноtop -H -p <pid>
работает лучше, например:Как примечание, поток с
-90
фактически является потоком в реальном времени.но
Есть также еще один вариант, который является истинным CLI
ps -e -T | grep <application name or pid>
-e
показывает все процессы-T
перечисляет все темы|
направляет вывод в следующую командуgrep
это фильтрует содержимоеВот пример:
Каждый из них имеет одинаковый PID, поэтому вы знаете, что они находятся в одном и том же процессе.
источник
sed
вместоgrep
вас, вы можете сохранить заголовок с тривиальным кодом:ps -e -T | sed -n '1p; /clementine/p;'
man top
говорит, что это псевдоним дляLWP
andTID
, тогда как LWP = облегченный процесс, а TID = идентификатор потока.htop , верхняя версия curses, имеет опцию отображения для отображения всех потоков для каждого процесса в виде дерева. Запуск
htop
и нажатие F5приведет к:источник
Вы можете попробовать использовать:
Например:
Каждый поток имеет свой собственный PID.
источник
Два стандартных инструмента для отображения информации о процессе:
ps
иtop
(иhtop
который похож / улучшен ).Примечания:
ps -m
,ps m
,ps H
...)Просмотр в реальном времени всего или процесса, используя
top -H
Мгновенный просмотр всех процессов и потоков, используя
ps -eLf
Потоки информации о процессе, используя
ps -T
(примечание: используйте либо опцию
-C command
, либо-p PID
выбрать процесс)Детализирует потоки информации о процессе, используя пользовательские
ps
источник
Вы можете попробовать
top -H -p <pid>
.Но учтите, что для некоторых разновидностей Unix опция '-H' недоступна в
top
команде.источник
-H
; Linux использует инструменты GNU (в том числеps
), а UNIX - нет. (Это, конечно, обобщение ...)Это должно отображать темы как процессы. Также помните, что все потоки многопоточных должны иметь одинаковый PID. Linux делает это путем создания групп потоков. Первый поток является лидером группы, а его PID будет tgid (thread groupID) группы потоков.
Вы можете узнать фактический PID и состояние потоков с помощью файловой системы / proc. Другой способ добиться этого - проверить PID с помощью ps, а затем выполнить следующую команду:
Затем проверьте дополнительные pids / tgid потоков и выполните следующую команду:
источник
Это перечислит вам потоки, связанные с вашим процессом (т.е. process_id) [Используется в Ubuntu. Существует вероятность того, что опция -H недоступна для некоторых разновидностей Linux]
источник
Приведенная выше команда показывает количество запущенных потоков для определенного процесса pid, если для процесса Java
источник
Я искал то же самое и смог придумать следующий сценарий bash:
это все еще в стадии разработки, я буду обновлять его по мере улучшения сценария.
Я не эксперт по Unix, я уверен, что один эксперт может написать это в 2 строки с лучшим качеством, но я намерен предоставить работающее решение для других.
обновлять фильтром и обрабатывать информацию
источник