하위 및 상위 프로세스를 PID로 재귀적으로 나열하는 트리

하위 및 상위 프로세스를 PID로 재귀적으로 나열하는 트리

모든 하위 프로세스를 트리 형식으로 얻으려면 다음 명령을 실행할 수 있습니다.

$ ps -g 24154 --forest
  PID TTY          TIME CMD
  24154 pts/4    00:00:00 bash
  25745 pts/4    00:00:00  \_ ps

PID에 대해 다음 o/p를 어떻게 얻나요? 다음은 ps -ef --forest | lessPID 24154의 동작 중 일부이다.

root      1173     1  0 Sep07 ?        00:00:00 /usr/sbin/sshd -D
root     24141  1173  0 11:10 ?        00:00:00  \_ sshd: vishwa [priv]
vishwa   24149 24141  0 11:10 ?        00:00:00  |   \_ sshd: vishwa@pts/4
vishwa   24154 24149  0 11:10 pts/4    00:00:00  |       \_ -bash
vishwa   26004 24154  0 11:22 pts/4    00:00:00  |           \_ ps -ef --forest
vishwa   26005 24154  0 11:22 pts/4    00:00:00  |           \_ less

답변1

다음 명령을 실행하여 init 프로세스에서 시작된 프로세스 이름과 PID를 가져올 수 있습니다.

$  pstree -ps $$
systemd(1)───sshd(1173)───sshd(42546)───sshd(42555)───bash(42560)───pstree(46455)

아래 명령은 bash에서 하위 프로세스를 실행하지 않기 때문에 작동합니다. 셸 내에서 여러 작업을 실행하면 예상된 결과가 표시되지 않습니다.

$ ps -ef --forest | grep -B3 $$
root      1173     1  0 Sep07 ?        00:00:00 /usr/sbin/sshd -D
root     42546  1173  0 20:44 ?        00:00:00  \_ sshd: vishwa [priv]
vishwa   42555 42546  0 20:44 ?        00:00:00  |   \_ sshd: vishwa@pts/3
vishwa   42560 42555  0 20:44 pts/3    00:00:00  |       \_ -bash
vishwa   46522 42560  0 21:13 pts/3    00:00:00  |           \_ ps -ef --forest
vishwa   46523 42560  0 21:13 pts/3    00:00:00  |           \_ grep --color=auto -B3 42560

$$다음은 현재 쉘의 PID입니다. echo $$PID를 출력하려면 입력하세요.

관련 정보