Wie liste ich alle von einem Masterskript aufgerufenen Skripte auf?

Wie liste ich alle von einem Masterskript aufgerufenen Skripte auf?

Ich möchte alle Skripte (rekursiv) auflisten, die von einem Masterskript aufgerufen werden. Beispiel:

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.

Dies ist wie der Tree-Befehl für Skripte.

Die Ausgabe könnte wie folgt aussehen:

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

Antwort1

Der beste Weg, dies zu tun, ist pstree. Es werden alle laufenden Prozesse in einem schönen Baumformat aufgelistet. Sie können die -HOption verwenden, um einen bestimmten Befehl hervorzuheben (angegeben alsPID). Im folgenden Beispiel verwende ich, pgrepum die PID von zu erhalten master.sh:

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

Der psBefehl kann auch tun, was Sie brauchen, der psBefehl kannallesaußer eine gute Tasse Kaffee zu kochen:

ps xjf

Hier werden alle Prozesse aufgelistet, die gestartet wurden von master.sh(genauer gesagt, es werdenalleProzesse, einschließlich der von gestarteten master.sh) in einem baumartigen Format:

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

Ich zeige hier nur die relevante Ausgabe, der obige Befehl gibt Ihnen auch verschiedene andere Informationen wie die PID, den Prozessstatus usw. usw.

verwandte Informationen