Quando um script é iniciado a partir do prompt de comando, o shell gera um subprocesso para esse script. Quero mostrar essa relação entre o processo no nível do terminal e seus filhos usando ps
uma saída no estilo de árvore.
Como posso fazer isso?
O que eu tentei até agora
Arquivo: script.sh
#!/bin/bash
ps -f -p$1
Então invoco o script a partir da linha de comando, passando o ID do processo do shell do terminal:
$ ./script.sh $$
O que eu quero é algo como isto
- processo de shell de nível superior (terminal)
- ./script.sh
- processo para o
ps
próprio comando
USER PID [..]
ubuntu 123 -bash
ubuntu 1234 \_ bash ./script.sh
ubuntu 12345 \_ ps auxf
o que estou recebendo é:
PID TTY STAT TIME COMMAND
14492 pts/24 Ss 0:00 -bash
pstree
?pstree
e não consegui que ele produzisse resultados significativos, acho quepstree $$
apenasbash--pstree
não produzi exatamente o que estava procurando.ps
, então, o que mais espera ver, excetopstree
?pstree -p $$
? Ou, se você quiser mais informações sobre a linha de comandopstree -pa $$
,. Ou, se você quiser mostrar todos os processos pai subindopstree -psa $$
,.Respostas:
Experimentar
fonte
$1
argumento para um script ou usando$$
para olhar para a árvore iniciando no shell atual ... Você pode atualizar sua resposta para incluir informações sobre como obter uma floresta iniciando em um processo específico?Encontrei depois de ler esta resposta de superusuário , observando este comentário
e experimentando
resultado
fonte
OUTPUT MODIFIERS: f ASCII-art process hierarchy (forest)
Você pode usar o comando
ps f -g <PID>
e o processo raiz paraPID
:fonte
Tente o seguinte:
fonte