자식을 포함하여 터미널 쉘의 프로세스 트리를 표시하려면 어떻게해야합니까? 자식 사이의 관계를 트리 스타일 출력으로 사용하고

명령 프롬프트에서 스크립트가 시작되면 셸은 해당 스크립트의 하위 프로세스를 생성합니다. 터미널 ps스타일 프로세스와 자식 사이의 관계를 트리 스타일 출력으로 사용하고 싶습니다 .
어떻게해야합니까?

내가 지금까지 시도한 것

파일: script.sh

#!/bin/bash

ps -f -p$1

그런 다음 터미널 쉘의 프로세스 ID를 전달하는 명령 줄에서 스크립트를 호출합니다.

$ ./script.sh $$

내가 원하는 것은 이런 것입니다

  • 최상위 (터미널) 쉘 프로세스
  • ./script.sh
  • ps명령 자체 처리
USER    PID  [..]
ubuntu 123     -bash
ubuntu 1234    \_ bash ./script.sh
ubuntu 12345      \_ ps auxf 

내가 얻는 것 :

  PID TTY      STAT   TIME COMMAND
14492 pts/24   Ss     0:00 -bash


답변

시험

# ps -aef --forest
root     114032   1170  0 Apr05 ?        00:00:00  \_ sshd: root@pts/4
root     114039 114032  0 Apr05 pts/4    00:00:00  |   \_ -bash
root      56225 114039  0 13:47 pts/4    00:00:16  |       \_ top
root     114034   1170  0 Apr05 ?        00:00:00  \_ sshd: root@notty
root     114036 114034  0 Apr05 ?        00:00:00  |   \_ /usr/libexec/openssh/sftp-server
root     103102   1170  0 Apr06 ?        00:00:03  \_ sshd: root@pts/0
root     103155 103102  0 Apr06 pts/0    00:00:00  |   \_ -bash
root     106798 103155  0 Apr06 pts/0    00:00:00  |       \_ su - postgres
postgres 106799 106798  0 Apr06 pts/0    00:00:00  |           \_ -bash
postgres  60959 106799  0 14:39 pts/0    00:00:00  |               \_ ps -aef --forest
postgres  60960 106799  0 14:39 pts/0    00:00:00  |               \_ more

답변

이 주석을 주목 하면서이 수퍼 유저 답변 을 읽은 후에 그것을 찾았습니다 .

그러나 특정 프로세스 만 인쇄하기 때문에 PID (-p)가 아니라 세션 (-g)

그리고 실험

ps f -g<PID>

결과

$ ./script.sh $$
  PID TTY      STAT   TIME COMMAND
14492 pts/24   Ss     0:00 -bash
 9906 pts/24   S+     0:00  \_ bash ./script.sh 14492
 9907 pts/24   R+     0:00      \_ ps f -g14492

답변

명령을 사용하고 다음에 ps f -g <PID>대한 루트 프로세스를 스탯 화할 수 있습니다 PID.

#> ps f -g 0

PID TTY      STAT   TIME COMMAND
2 ?        S      0:00 [kthreadd]
3 ?        S      0:01  \_ [ksoftirqd/0]
7 ?        S      0:19  \_ [rcu_sched]

답변

이 시도:

 $ ps -afx
  PID TTY      STAT   TIME COMMAND
    2 ?        S      0:00 [kthreadd]
    4 ?        I<     0:00  \_ [kworker/0:0H]
    6 ?        I<     0:00  \_ [mm_percpu_wq]
    7 ?        S      0:14  \_ [ksoftirqd/0]
    8 ?        I      0:34  \_ [rcu_sched]
    9 ?        I      0:00  \_ [rcu_bh]
   10 ?        S      0:00  \_ [migration/0]
   11 ?        S      0:00  \_ [watchdog/0]