Shell

如何查看子程序的cpu和記憶體使用情況

  • March 2, 2020

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。

引用自:https://unix.stackexchange.com/questions/147857