Como listar todos os scripts chamados por um script mestre?

2

Eu quero listar todos os scripts (recursivamente) que estão sendo chamados por um script mestre. Por exemplo:

master.sh

a.sh >> this script calls a1.sh, a2.sh, a3.sh etc
b.sh >> this one calls b1.sh, b2.sh, something.sh, etc.sh..
c.sh > similarly.

Isto é como o comando tree para scripts.

A saída poderia ser como

master.sh
-a.sh
 |- a1.sh
    |-something.sh
    |-something_else.sh
-a2.sh
 |-x.sh
 |-y.sh
-a3.sh
...
    
por Pandoo 11.01.2013 / 19:20

1 resposta

1

A melhor maneira de fazer isso é pstree . Ele listará todos os processos em execução em um formato de árvore agradável. Você pode usar a opção -H para destacar um comando específico (fornecido como um PID ). No exemplo abaixo, estou usando pgrep para obter o PID de master.sh :

pstree -H 'pgrep master.sh' |grep -A 2 master.sh 
 |-bash---master.sh-+-a1.sh---something.sh
 |                  |-a2.sh
 |                  |-a3.sh

O comando ps também pode fazer o que você precisa, o comando ps pode fazer tudo exceto preparar uma boa xícara de café:

ps xjf

Isso listará todos os processos lançados por master.sh (na verdade, ele listará todos processos, incluindo aqueles iniciados por master.sh ) em um formato de árvore:

\_ master.sh
|   \_ a1.sh
|       \_ something.sh
|       \_ something.sh
|   \_ a2.sh
|   \_ a3.sh

Estou mostrando apenas a saída relevante aqui, o comando acima também fornecerá várias outras informações, como o PID, o status do processo, etc. etc.

    
por 11.01.2013 / 19:37