¿Cómo enumerar todos los scripts llamados por un script maestro?

¿Cómo enumerar todos los scripts llamados por un script maestro?

Quiero enumerar todos los scripts (recursivamente) a los que llama un script maestro. Por ejemplo:

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.

Esto es como el comando de árbol para scripts.

La salida podría ser como

master.sh
-a.sh
 |- a1.sh
    |-something.sh
    |-something_else.sh
-a2.sh
 |-x.sh
 |-y.sh
-a3.sh
...

Respuesta1

La mejor manera de hacer esto es pstree. Enumerará todos los procesos en ejecución en un bonito formato de árbol. Puede utilizar la -Hopción para resaltar un comando específico (dado como unPID). En el siguiente ejemplo, estoy usando pgreppara obtener el 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

El pscomando también puede hacer lo que necesitas, el pscomando puede hacertodoexcepto preparar una buena taza de café:

ps xjf

Esto enumerará todos los procesos iniciados por master.sh(de hecho, enumerarátodoprocesos, incluidos los iniciados por master.sh) en formato de árbol:

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

Aquí solo muestro el resultado relevante, el comando anterior también le brindará otros datos como el PID, el estado del proceso, etc., etc.

información relacionada