次のシナリオがあります。
ユーザーがプロセスの PID を入力すると、スクリプトはプロセスとそのサブプロセス、PID のサブサブプロセス (など) を表示し、ツリー形式でリストする必要があります。
と を使ってみpstree PID
ましps faux PID
たが、うまくいきません。プロセスの PID を引数としてとらないようです。
アイデアはありますか?
これはpsとawkのみを使用した bash スクリプトです。プロセス ツリーを生成するためのベースとして at を使用できます。
ppid=$1
while true
do
forloop=FALSE
# get all children by pid
for i in `ps -ef | awk '$3 == '$ppid' {print $2}'`
do
# Here you have one of of the elements of tree
# parent -> child
echo $ppid - $i
forloop=TRUE
done
ppid=$i
if [ "$forloop" = "FALSE" ]; then
exit
fi
done
最初のステップは、ps を awk と grep にパイプすることです。awk を使用すると、「このプロセス PID」フィールドまたは「親プロセス PID」フィールドのいずれかを分離できます。
または、/proc ファイル システムを調べてみてください。