特定のプロセスの子プロセス数を見つける

特定のプロセスの子プロセス数を見つける

いくつかのサブプロセスを生成するが一度に複数回生成しないPythonスクリプトがありますn

与えられた時間に子プロセス以上がなく、通常はnプロセスnが実行されていることを確認するためにシェルスクリプトを作成したいと思います。

シェルスクリプトにPythonプログラムのPIDがある場合、そのPIDが現在所有しているサブプロセスの数をどのように確認できますか?例えば

python script.py &
pid=$!
while true
do
    # do something that prints number of subprocesses of
    # the process $pid to stdout
    sleep 1
done

ベストアンサー1

ps -eo ppid= | grep -Fwc $pid

grepサポートしていない場合-w

ps -eo ppid= | tr -d '[:blank:]' | grep -Fxc $pid

または

ps -eo ppid= | awk '$1==ppid {++i} END {print i+0}' ppid=$pid

または(位置パラメータの中断)

set $(ps -eo ppid=); echo $#

これはアトミックではないため、データの収集に要する短時間で一部のプロセスが終了し、他のプロセスが作成された場合はカウントが正しくない可能性があります。

おすすめ記事