如何找到进程的祖先链?

Mic*_*ael 7 linux unix process

我可以ps -o "pid,ppid,args" -p my_pid找到my_pid.

我可以继续ps -o "pid,ppid,args" -p previously_found_ppid循环直到到达ppid=1.

但是,我敢打赌,有一个单一的调用解决方案可以从my_pid它的所有祖先开始并列出它。pstree与此相反的事情从父项开始并列出其所有后代。你能说出这样的 Unix/Linux 命令是否容易获得?

Xen*_*050 5

看起来pstree可以做你想做的事,它是-s 显示指定进程选项的父进程

$ pstree -s 5698 
init???mdm???mdm???init???at-spi-bus-laun???dbus-daemon
Run Code Online (Sandbox Code Playgroud)

或更多信息(参数)和更漂亮的-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 ...
Run Code Online (Sandbox Code Playgroud)

或者几个选项一起

$ 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
Run Code Online (Sandbox Code Playgroud)