supervisord
CentOS サーバーで実行しています。もし私がするなら
ps -e -o %mem,%cpu,cmd | grep supervisord | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'
私は初期化デーモンなので、0 0
それを得ています。supervisord
私のサーバーで4つのサブプロセスを実行します。
# pgrep -P $(pgrep supervisord) | wc -l
4
1行のコマンドで、これらのサブプロセスのCPUとメモリ使用量の概要をどのように見つけることができますか?
答え1
コードハッピーラウアの答え、
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です。
答え2
与えられた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を取得することはできません。
答え3
以下を試してくださいxargs
。
pgrep -P $(pgrep supervisord) | xargs ps -o %mem,%cpu,cmd -p | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'