bashスクリプトの子プロセスの数は、スクリプト自体の中からどのように見つけるのですか?子プロセスの数を調べる
答えて
bashスクリプトのPIDを取得するには、変数$$
を使用できます。
すると、その子を取得するために、次のコマンドを実行します。
bash_pid=$$
children=`ps -eo ppid | grep -w $bash_pid`
ps
は、親のPIDのリストを返します。 grep
は、bashスクリプトの子に関係のないすべてのプロセスをフィルタリングします。あなたが行うことができます子供の数を得るために:ps
があまりにもbashスクリプトの子になりますので、
num_children=`echo $children | wc -w`
実際にあなたが得る数は、1でオフになります。
let num_children=num_children-1
UPDATE:grep
を呼び出さないようにするためにサポートされている場合、次の構文は、(使用されるかもしれないあなたが子供としてps
の実行をカウントしたくない場合は、していることだけで修正することができますps
のインストール版)によって:
num_children=`ps --no-headers -o pid --ppid=$$ | wc -w`
bash pidが子のプロセスIDの部分文字列である場合の 'grep -w $ bash_pid'。 – chepner
@chepner良い点!私はそれを修正します。ありがとう! :) – betabandido
わかりませんが、余分なプロセスはps/grepパイプラインを含むサブシェルだと思います。ちょうどペタニチである:) – chepner
--ppid
オプションで使用ps
は、現在のbashプロセスの子を選択します。
bash_pid=$$
child_count=$(ps -o pid= --ppid $bash_id | wc -l)
let child_count-=1 # If you don't want to count the subshell that computed the answer
(注:これは--ppid
ためps
のLinuxバージョンを必要とBSD ps
かの等価があるかどうかはわからない。。)
あなたが好きなシェル組み込みコマンドの仕事を評価することができます:
counter = `jobs | wc -l`
これは、プロセスではなくジョブを数えます。ジョブは、複数のプロセスで構成できます。 – chepner
等号のまわりにスペースは入れません。バッククォートの代わりに '$()'を使います。 –
また、pgrepコマンドを使用することができます。
child_count=$(($(pgrep --parent $$ | wc -l) - 1))
pgrep --parent $$
を使用して、bashプロセスの子のリストを取得します。
その後の行数を取得するために出力にwc -l
を使用します。$(pgrep --parent $$ | wc -l)
その後、私は好む1(pgrep --parent $$
が空で1でもwc -l
レポート)
を引く:
num_children=$(pgrep -c -P$$)
をそれはちょうど1を生成しますプロセスでは、単語を数えたり、パイプ内のプログラムによってPIDの数を調整したりする必要はありません。
例:
~ $ echo $(pgrep -c -P$$)
0
~ $ sleep 20 &
[1] 26114
~ $ echo $(pgrep -c -P$$)
1
- 1. C++はプロセスを処理し、各プロセスのコマンドライン引数を調べます
- 2. Nokogiri要素の子インデックスを調べる
- 3. ツリー内の子ノードの最大数を調べる
- 4. Java - LinkedBinaryTree内の子の数を調べる
- 5. ユニークな子ノードの数を調べるXSLT
- 6. Linuxのプロセス:すべての子プロセスをスリープ状態にする。
- 7. varnameが因子変数かどうかを調べる
- 8. 親プロセスの子プロセスの数C/C++、LINUX
- 9. XMLファイルからDOM子要素の数を調べよう
- 10. プロセスが何をしているかを調べる方法は?
- 11. リモートマシン上でプロセスを実行しているユーザーを調べる
- 12. valgrind/callgrindがプロセスをkillする理由を調べる方法
- 13. Foreverを使用する。子プロセスのPIDを調べるにはどうすればよいですか?
- 14. 親プロセスが子プロセスをすべてキャッチしない
- 15. ラムダ内のパラメータの数を調べる
- 16. MongoObservable.Collection内のドキュメントの数を調べる
- 17. カーネルモードでプロセスの子プロセスと兄弟プロセスの数を計算する
- 18. ペリカンの変数を調べるには
- 19. Solrインデックスでのトータルカウント数を調べる
- 20. 文書の配列数を調べる
- 21. 各レベルの学生数を調べる
- 22. jsonオブジェクトの要素数を調べる
- 23. ASP.NETディレクトリのファイル数を調べる
- 24. PHP、DOM、XPathのノード数を調べる
- 25. 複数の値を調べる小枝
- 26. 数字の威力を調べる
- 27. 関数スコープの値を調べる
- 28. アルゴリズムのステップ数を調べる
- 29. 子プロセス/親プロセス
- 30. 親プロセスがすべての子プロセスを待つようにする
HM。再帰的に? –