web-dev-qa-db-ja.com

子プロセスのCPUとメモリ使用量を見つける方法

supervisordはCentOSサーバーで実行されています。私が行った場合

ps -e -o %mem,%cpu,cmd | grep supervisord | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'

0 0supervisordは単なる初期化デーモンだからです。サーバーで4つの子プロセスを実行します。

# pgrep -P $(pgrep supervisord) | wc -l
4

これらの子プロセスのCPUとメモリの使用状況の要約を1行のコマンドで確認するにはどうすればよいですか?

8
KennyPowers

コード

pgrep -P $(pgrep supervisord) | xargs ps -o %mem,%cpu,cmd -p | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'

子レイヤーを1つだけ取得します

メインPIDから派生したすべてのプロセスを検索する場合は、このコードを使用します。

ps -o pid,ppid,pgid,comm,%cpu,%mem  -u {user name} | {grep PID_PRINCIPAL}

メインプロセスのpidは、子プロセスのPGIDです。

4
jhonatan1090

pidが与えられると、

pid=24535
pstree -p $pid | grep -o '([0-9]\+)' | grep -o '[0-9]\+' |\
  xargs ps -o %mem,%cpu,cmd -p | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'
# 15.5 905.2

Pgrepからすべての子プロセスのPIDを取得できませんでした。

4
Daniel