采用计算的方式也可以,使用c++计算时由于不同芯片的计算方式可能不一样,结果可能有差异;如在x86_64-pc-linux上统计与top命令一致,但移植到arm机器上就会有显示偏差。所以,本文采用脚本的方式获取,直接与系统保持一致。
内存主要运用的是cat /proc/$PID/smaps | grep '^Rss' | awk '{sum +=$2} END {print sum/1024}这个命令,访问进程的smaps文件进行统计。
cpu是采集top命令中的结果 top -d 3 -n 2 | grep "$PROCESS_NAME" | grep -v grep | tail -n 1 | awk '{print $7}' | cut -d'%' -f1; 表示每3秒刷新一次,采集2次结果,取后一次;top是根据上一次刷新的时间到这一次刷新时间算cpu的占用,这样就刚好是3秒内cpu的占用。