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

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

这是我想要做的:我想要从中获取一个树格式的进程列表附言(就像你做的那样ps auxwwf),但仅限于我拥有的进程,或我拥有的进程的祖先。所以如果我拥有一个狂欢进程沿着树向下,并且它有根拥有的祖先,除了我拥有的祖先之外,我还想查看那些根祖先。我确实不是想要查看不包含我拥有的任何进程的进程树。

有什么办法可以做到这一点附言的正常选项,还是我需要编写脚本来解析输出?

答案1

这不会很快,但是似乎可以解决问题:

# 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)

答案2

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

编辑

仅供观赏你的进程

  ps -fjH -u myname

答案3

这取决于您的操作系统,但根据您给出的 ps 命令,我认为这可能会起作用:

ps --user dirtside -uxxf

答案4

我对此的看法是,使用迭代而不是递归(不必担心堆栈溢出):

ps_backtrace.sh

相关内容