“ps”能否以树形格式显示我拥有的所有进程及其所有祖先?

这就是我想要做的:我想从ps获得一个树形格式的进程列表(当你做ps auxwwf ),但是只有我拥有的进程或者是我拥有的进程的祖先。 所以如果我在树上拥有一个bash的过程,并且拥有root的祖先,那么除了我自己所拥有的祖先外,我还想看看那些祖先的祖先。 我不想看到任何不包含我拥有的进程的进程树。

有没有办法做到这一点与PS的正常选项,或者我需要编写一个脚本来parsing输出?

这不会很快,但它似乎有诀窍:

 # Bash, GNU ps pidchain () { if [[ -z $1 ]]; then return; fi; if (( $1 == 0 )); then return; else echo "$1"; pidchain $(ps -p $1 o ppid=); fi } pids () { ps o pid= -u $1 | while read pid do pidchain $pid done | sort -nu } ps uxwwf -p $(pids username) 

尝试ps -ejH ,显示基于父子链接的进程树。

编辑

只看到你的进程

  ps -fjH -u myname 

这取决于你的操作系统,但基于你给的ps命令,我认为这可能工作:

ps --user dirtside -uxxf

我承担这一点,使用迭代,而不是recursion(不用担心,你会溢出你的堆栈):

ps_backtrace.sh