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
これらの子プロセスの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です。
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を取得できませんでした。