![특정 프로세스의 상위 프로세스만 가져오는 방법은 무엇입니까?](https://linux55.com/image/137668/%ED%8A%B9%EC%A0%95%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98%20%EC%83%81%EC%9C%84%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%A7%8C%20%EA%B0%80%EC%A0%B8%EC%98%A4%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
이 올바른지
pstree <pid>
특정 프로세스의 모든 하위 프로세스를 출력합니다.pstree -s <pid>
주어진 프로세스의 모든 자손과 조상을 출력합니다
특정 프로세스의 상위 프로세스만 가져오는 방법은 무엇입니까?
감사해요.
답변1
다음을 사용하여 언제든지 조상 트리를 수동으로 탐색할 수 있습니다 ps -o ppid=
.
#! /bin/bash -
pid=${1?Please give a pid}
while
[ "$pid" -gt 0 ] &&
read -r ppid name < <(ps -o ppid= -o comm= -p "$pid")
do
printf '%s\n' "$pid $name"
pid=$ppid
done
ps
또는 여러 번 실행하지 않으려면 다음을 수행하세요 .
#! /bin/sh -
pid=${1?Please give a pid}
ps -Ao pid= -o ppid= -o comm= |
awk -v p="$pid" '
{
pid = $1; ppid[pid] = $2
sub(/([[:space:]]*[[:digit:]]+){2}[[:space:]]*/, "")
name[pid] = $0
}
END {
while (p) {
print p, name[p]
p = ppid[p]
}
}'
답변2
다음을 시도해 볼 수 있습니다.리눅스 매뉴얼 페이지: -h 현재 프로세스와 그 상위 프로세스를 강조 표시합니다. -n 이름이 아닌 PID를 기준으로 동일한 조상을 가진 프로세스를 정렬합니다.