これが正しいか
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
次のことを試すことができます。Linuxのマニュアルページ: -h 現在のプロセスとその親プロセスを強調表示します。 -n 名前ではなく PID に基づいて同じ祖先を持つプロセスをソートします。