写在前面:
所谓cpu占用率需要定义一个时间段才有意义,因为如果细化到很小很小的时刻,cpu占用率要么0% 要么100%,就完全没有意义了,而这个时间是当前时刻前的1s、3s、5s、还是到刚开机这个看具体情况了。
在linux系统下,一般我们经常通过ps -aux以BSD风格显示进程的信息,同时可以通过其得到每个进程CPU占用率。
方法1:ps -aux | awk '{sum+=$3} END{print sum}' //既是将ps -aux的第三列(所有进程cpu利用率求和)。
存在问题:1 ps -aux看的是所有用户状态的进程 init进程之后启动的进程,缺少系统自身占用cpu的数据。
2 ps 显示的cpu占用率为进程从创建起,到目前的平均cpu占用率,如果系统中的进程跑的时间都较长,则可能看的不是我们要看的信息。
方法2:top -n 2 -d 1 | grep Cpu //思路就是获取top第二次刷屏的数据
通过这个命令,我们同样能获得cpu的信息,-n 2表示top的信息刷2次,因为top信息第一次显示的为系统开机到当前时刻的平均值,这个我觉得意义不大,-d 表示刷新时间,默认是3,我觉得慢,注意太快top会对目前数据有较大影响(1s的话cpu占用基本为0的),这个看我们想求cpu多久内的平均值了。(数据有了,sed awk 处理处理就可以了)。获取实时cpu利用率可行的方式。
方法3:分析/proc/stat,从中获取cpu占用率等信息,该文件是从系统启动开始到当前的平均值,可以做系统分析等用处,用户进程用了多少cpu时间,系统用了多少等,并且此文件因各个内核版本很多都有改动,需要小心注意下。
方法4:通过系统api自己计算(略)。
以上前3种方式均测试了下,如有不正或更好的方式希望告诉下O(∩_∩)O~
阅读(5428) | 评论(0) | 转发(0) |