2

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

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 ответ1

1

Лучший способ сделать это - pstree . В нем будут перечислены все запущенные процессы в хорошем древовидном формате. Вы можете использовать опцию -H чтобы выделить конкретную команду (заданную как PID). В приведенном ниже примере я использую 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, статус процесса и т.д. И т.д.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .