Shell
如何查看子程序的cpu和記憶體使用情況
supervisord
在 CentOS 伺服器上執行。如果我做ps -e -o %mem,%cpu,cmd | grep supervisord | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'
我得到
0 0
只是因為supervisord
它只是一個初始化守護程序。它在我的伺服器上執行四個子程序:# pgrep -P $(pgrep supervisord) | wc -l 4
如何在一行命令中找到這些子程序的匯總 CPU 和記憶體使用情況?
編碼
pgrep -P $(pgrep supervisord) | xargs ps -o %mem,%cpu,cmd -p | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'
只會得到一個子層
如果您想搜尋從主 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。