Como encontrar a cadeia ancestral de um processo?

5

Eu posso fazer ps -o "pid,ppid,args" -p my_pid para encontrar o pai de my_pid .

Eu posso continuar ps -o "pid,ppid,args" -p previously_found_ppid em um loop até chegar em ppid=1 .

No entanto, aposto, existe uma única solução de chamada que começa com my_pid e lista todos os seus ancestrais. Algo reverso para pstree que começa com o pai e lista todos os seus descendentes. Você poderia dizer se tal comando Unix / Linux está prontamente disponível?

    
por Michael 27.04.2017 / 19:05

1 resposta

4

Parece que pstree pode fazer o que quiser, com -s Mostrar processos pai da opção do processo especificado

$ pstree -s 5698 
init───mdm───mdm───init───at-spi-bus-laun───dbus-daemon

Ou mais informações (argumentos) e mais bonitas com a opção -a

mint@mint ~ $ pstree -s -a 5698 
init
  └─mdm
      └─mdm
          └─init --user
              └─at-spi-bus-laun
                  └─dbus-daemon --config-file=/etc/at-spi2/accessibility.conf ...

Ou algumas opções juntas

$ pstree -s -p -a -G -l 5698 
init,1
  └─mdm,1994
      └─mdm,5358
          └─init,5379 --user
              └─at-spi-bus-laun,5691
                  └─dbus-daemon,5698 --config-file=/etc/at-spi2/accessibility.conf --nofork --print-address 3
    
por 28.04.2017 / 15:01