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 -H
Option verwenden, um einen bestimmten Befehl hervorzuheben (angegeben alsPID). Im folgenden Beispiel verwende ich, pgrep
um 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 ps
Befehl kann auch tun, was Sie brauchen, der ps
Befehl 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.