Para Windows, acho que o Process Explorer mostra todos os threads de um processo.
Existe um utilitário de linha de comando semelhante para Linux que pode me mostrar detalhes sobre todos os threads que um processo específico está gerando?
Eu acho que deveria ter me deixado mais claro. Eu não quero ver a hierarquia do processo, mas uma lista de todos os threads gerados por um processo específico
Veja esta captura de tela
Como isso pode ser alcançado no Linux? Obrigado!
command-line
shell
process
lazer
fonte
fonte
Respostas:
A ferramenta clássica
top
mostra processos por padrão, mas pode ser solicitada a mostrar threads com aH
tecla pressionada ou a-H
opção de linha de comando. Também há htop , que é semelhante,top
mas tem rolagem e cores; mostra todos os threads por padrão (mas isso pode ser desativado).ps
também tem algumas opções para mostrar tópicos, especialmenteH
e-L
.Também existem ferramentas da GUI que podem mostrar informações sobre encadeamentos, por exemplo, qps (um simples invólucro da GUI
ps
) ou conky (um monitor do sistema com muitas opções de configuração).Para cada processo, muitas informações estão disponíveis em
/proc/12345
onde12345
está o ID do processo. As informações sobre cada encadeamento estão disponíveis em/proc/12345/task/67890
onde67890
está o ID do encadeamento do kernel. Este é o lugar ondeps
,top
e outras ferramentas de obter suas informações.fonte
htop
parece não me mostrar os tópicos. Eles mencionam aH
chave como uma maneira de alternar entre mostrar e ocultar threads, mas funciona como a chave de ajuda ainda ...h
para obter ajuda, maiúsculasH
para mostrar / ocultar threads.Listando threads no Linux
Respostas atuais
Gostaria de deixar claro que cada resposta aqui está fornecendo exatamente o que você especificou, uma lista de todos os threads associados a um processo, isso pode não ser óbvio
htop
, pois, por padrão, lista todos os threads no sistema, não apenas o processo, mastop -H -p <pid>
funciona melhor, por exemplo:Como uma observação lateral, o encadeamento com
-90
é realmente um encadeamento em tempo real.mas
Há também outra opção que é verdadeira CLI
ps -e -T | grep <application name or pid>
-e
mostra todos os processos-T
lista todos os tópicos|
canaliza a saída para o próximo comandogrep
isso filtra o conteúdoAqui está um exemplo:
Cada um deles tem o mesmo PID para que você saiba que eles estão no mesmo processo.
fonte
sed
vez de,grep
poderá preservar o título com código trivial:ps -e -T | sed -n '1p; /clementine/p;'
man top
diz que é um alias paraLWP
eTID
, enquanto LWP = processo leve e TID = identificador de segmento.O htop , uma versão maldita do topo, tem uma opção de exibição para mostrar todos os threads de cada processo em uma exibição em árvore. Iniciar
htop
e pressionar F5resultará em:fonte
Você pode tentar usar:
Por exemplo:
Cada thread tem seu próprio PID.
fonte
As duas ferramentas padrão para mostrar informações de processo são
ps
etop
(ehtop
que são semelhantes / aprimoradas ).Notas:
ps -m
,ps m
,ps H
...)Visualização em tempo real de tudo ou processo, usando
top -H
Visualização instantânea de todos os processos e threads, usando
ps -eLf
Encadea informações de um processo, usando
ps -T
(nota: use uma opção
-C command
ou-p PID
para selecionar o processo)Detalha informações sobre threads de um processo, usando customizações
ps
fonte
Você pode tentar
top -H -p <pid>
.Mas observe que em alguns sabores do Unix a opção '-H' não está disponível no
top
comando.fonte
-H
; O Linux usa ferramentas GNU (incluindops
) e o UNIX não. (Isto é, naturalmente, uma generalização ...)Isso deve exibir threads como processos. Lembre-se também de que todos os threads de um multithread devem ter o mesmo PID. O Linux faz isso criando grupos de threads. O primeiro thread é o líder do grupo e seu PID será tgid (thread groupID) do grupo de threads.
Você pode descobrir o PID real e o status dos threads usando o sistema de arquivos / proc. Outra maneira de conseguir isso é verificar o PID usando ps e, em seguida, execute o seguinte comando:
Em seguida, verifique outros pids / tgid de threads e execute o seguinte comando:
fonte
Isso listará os tópicos associados ao seu processo (por exemplo, process_id) [Usado no Ubuntu. Existe a possibilidade de a opção -H não estar disponível em alguns dos sabores do linux]
fonte
O comando acima mostra o número de encadeamentos em execução para o processo específico pid, se for para o processo java
fonte
Eu estava procurando o mesmo e consegui criar o seguinte script bash.
Isso ainda está em andamento, atualizarei isso à medida que melhorar o script.
Não sou especialista em unix, tenho certeza de que algum especialista pode escrevê-lo em duas linhas, com uma qualidade melhor, mas minha intenção é fornecer uma solução funcional para os outros.
atualizar com informações de filtro e processo
fonte