Pode 'ps' mostrar-me apenas os processos que possuo, além de todos os seus antepassados, em formato de árvore?

1

Aqui está o que eu quero fazer: Eu quero obter uma lista de processos formatados em árvore de ps (como quando você faz ps auxwwf ), mas apenas dos processos que são de minha propriedade ou são ancestrais de processos de minha propriedade. Então, se eu possuo um processo bash na árvore, e tem ancestrais de propriedade do root, eu quero ver esses ancestrais de raiz além daqueles que eu possuo. Eu faço não quero ver quaisquer árvores de processo que não contenham nenhum processo de minha propriedade.

Existe alguma maneira de fazer isso com as opções normais do ps , ou eu preciso escrever um script para analisar a saída?

    
por dirtside 23.09.2010 / 17:49

4 respostas

1

Isso não será muito rápido, mas parece fazer o truque:

# 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)
    
por 24.09.2010 / 00:59
1

Experimente ps -ejH que exibe uma árvore de processos, baseada em links pai-filhos.

editar

Para ver apenas seus processos

  ps -fjH -u myname
    
por 23.09.2010 / 18:06
0

Isso depende do seu sistema operacional, mas, com base no comando ps fornecido, acho que isso pode funcionar:

ps --user dirtside -uxxf

    
por 23.09.2010 / 20:27
0

Minha opinião sobre isso, usando iteração em vez de recursão (não se preocupe se você vai transbordar sua pilha):

ps_backtrace.sh

    
por 24.02.2015 / 21:24

Tags