Как составить список всех скриптов, вызываемых главным скриптом?

Как составить список всех скриптов, вызываемых главным скриптом?

Я хочу перечислить все скрипты (рекурсивно), которые вызываются главным скриптом. Например:

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.

Это похоже на команду дерева для скриптов.

Вывод может быть таким:

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

решение1

Лучший способ сделать это — pstree. Он выведет список всех запущенных процессов в удобном древовидном формате. Вы можете использовать -Hопцию для выделения определенной команды (заданной какПИД). В примере ниже я использую pgrepдля получения PID master.sh:

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

Команда psтакже может сделать то, что вам нужно, psкоманда может сделатьвсекроме как сварить чашку хорошего кофе:

ps xjf

Это выведет список всех процессов, запущенных master.sh(фактически, это будет списоквсепроцессы, в том числе запущенные master.sh) в древовидном формате:

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

Я показываю здесь только соответствующий вывод, указанная выше команда также предоставит вам различную другую информацию, такую ​​как PID, статус процесса и т. д. и т. п.

Связанный контент