Acho que pstree -s 12312
fornece o que você deseja, se não em um formato tão bom.
Às vezes, estou procurando um equivalente para o AIX proctree
command
que exibe todos os filhos e todos os ancestrais de um PID especificado e pode ser, às vezes, bastante útil para fins de solução de problemas. Como um exemplo
aqui está um trecho da página man:
To display the ancestors and children of process 12312,
including children of process 0, enter:
proctree -a 12312
The output of this command might look like this:
1 /etc/init
4954 /usr/sbin/srcmstr
7224 /usr/sbin/inetd
5958 telnetd -a
13212 -sh
14724 ./proctree -a 13212
Outra forma útil que eu uso às vezes é proctree $$
, que também mostra meu terminal atual, e se eu me conectei via ssh ou via console.
Para esclarecimentos, não estou procurando um script que emule isso no linux, mas um equivalente real que já pode existir.
No linux, pstree
mostra todos os processos filhos de um PID especificado, mas a raiz sempre será o PID especificado (ou o init se nenhum PID for especificado e uma árvore completa será mostrada).
Algo como ps --forest -u "$username"
também não ajuda, pois mostra apenas os processos de um determinado usuário e mostra todos eles - não apenas os de uma determinada árvore.
Repostando meu comentário como uma resposta para uma melhor formatação.
Oh cara, parece que eu perdi totalmente isso na man page.
pstree -pas PID
mostrará também os pais, formatados como árvore e incluirão os PIDs dos processos.
Um exemplo:
[doktor5000@Mageia5]─[20:06:48]─[~] pstree -pas $$
systemd,1
└─konsole,9515
└─bash,9517
└─pstree,9595 -pas 9517
[doktor5000@Mageia5]─[20:06:49]─[~]