마스터 스크립트가 호출하는 모든 스크립트를 나열하는 방법은 무엇입니까?

마스터 스크립트가 호출하는 모든 스크립트를 나열하는 방법은 무엇입니까?

마스터 스크립트에 의해 호출되는 모든 스크립트를 (재귀적으로) 나열하고 싶습니다. 예를 들어:

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옵션을 사용하여 특정 명령을 강조 표시 할 수 있습니다 (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, 프로세스 상태 등과 같은 다양한 정보도 제공합니다.

관련 정보