모든 하위 프로세스를 트리 형식으로 얻으려면 다음 명령을 실행할 수 있습니다.
$ 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 | less
PID 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를 출력하려면 입력하세요.