是否正确
pstree <pid>
将输出给定进程的所有后代进程
pstree -s <pid>
将输出给定进程的所有后代进程和祖先进程
我怎样才能只获得给定进程的祖先进程?
谢谢。
您始终可以使用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
Run Code Online (Sandbox Code Playgroud)
或者避免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]
}
}'
Run Code Online (Sandbox Code Playgroud)