文档章节

获取树莓派cpu温度、cpu使用率、内存使用率

李鱼跃龙门
 李鱼跃龙门
发布于 2014/04/26 20:17
字数 456
阅读 655
收藏 1

树莓派的/proc/文件夹中有各种虚拟文件,可以用来读取系统的各种数据。

下面以读取内存使用率、CPU使用率、CPU温度为例进行演示,用JSP页面实现。代码中的说明部分写明了所要读取的文件和计算方法。

代码片段:

<%@ page language="java" pageEncoding="utf-8" import="java.io.BufferedReader, java.io.FileReader, java.util.*"%>

<%--statebar info start--%>
        <%--
            -function:get memery usage
            -method:(read /proc/meminfo)
            -calculation:
                total memery = MemTotal
                mem free = MemFree + Buffers + Cached
                mem usage = MemTotal - mem free
        --%>
        <%
            FileReader fr_mem_usage=new FileReader("/proc/meminfo");
            BufferedReader br_mem_usage=new BufferedReader(fr_mem_usage);
            String s_mem_total=br_mem_usage.readLine();
            String s_mem_free=br_mem_usage.readLine();
            String s_mem_buffers=br_mem_usage.readLine();
            String s_mem_cached=br_mem_usage.readLine();
            String[] s_mem_total_array = s_mem_total.split("\\s+");
            String[] s_mem_free_array = s_mem_free.split("\\s+");
            String[] s_mem_buffers_array = s_mem_buffers.split("\\s+");
            String[] s_mem_cached_array = s_mem_cached.split("\\s+");
            
            int mem_total = Integer.parseInt(s_mem_total_array[1]);
            int mem_free = Integer.parseInt(s_mem_free_array[1]);
            int mem_buffers = Integer.parseInt(s_mem_buffers_array[1]);
            int mem_cached = Integer.parseInt(s_mem_cached_array[1]);

            int memUsage = 100 - (100 * (mem_free + mem_buffers + mem_cached) / mem_total);

            fr_mem_usage.close();
            br_mem_usage.close();
        %>
        
        <%--
            -function:get cpu usage
            -method:(read /proc/stat)
            -calculation:
                CPU total time=user+nice+system+idle+iowait+irq+softirq
                cpu usage=(idle2-idle1)/(cpu2-cpu1)*100
                OR cpu usage=[(user_2 +sys_2+nice_2) - (user_1 + sys_1+nice_1)]/(total_2 - total_1)*100
        --%>
        <%
            FileReader fr_cpu_usage1=new FileReader("/proc/stat");
            BufferedReader br_cpu_usage1=new BufferedReader(fr_cpu_usage1);
            String s_cpu_usage1=br_cpu_usage1.readLine();
            String[] s_cpu_usage_array1 = s_cpu_usage1.split("\\s+");
            int f_cpu_usage_array1[] = new int[7];
            for(int i=1;i<=7;i++){
                f_cpu_usage_array1[i-1] = Integer.parseInt(s_cpu_usage_array1[i]);
            }
            fr_cpu_usage1.close();
            br_cpu_usage1.close();

            Thread.sleep(100);      
        
            FileReader fr_cpu_usage2=new FileReader("/proc/stat");
            BufferedReader br_cpu_usage2=new BufferedReader(fr_cpu_usage2);
            String s_cpu_usage2=br_cpu_usage2.readLine();
            String[] s_cpu_usage_array2 = s_cpu_usage2.split("\\s+");
            int f_cpu_usage_array2[] = new int[7];
            for(int i=1;i<=7;i++){
                f_cpu_usage_array2[i-1] = Integer.parseInt(s_cpu_usage_array2[i]);
            }
            fr_cpu_usage2.close();
            br_cpu_usage2.close();

            int cputotal1=0,cputotal2=0,idle1=0,idle2=0,cpuUsage=0;
            for(int i=0;i<=6;i++){
                cputotal1 = cputotal1 + f_cpu_usage_array1[i];
            }
            for(int i=0;i<=6;i++){
                cputotal2 = cputotal2 + f_cpu_usage_array2[i];
            }
            idle1 = f_cpu_usage_array1[3];       
            idle2 = f_cpu_usage_array2[3];
            cpuUsage = 100 - (100 * (idle2 - idle1)/(cputotal2 - cputotal1));
        %>
        
        <%--
            -function:get cpu temperature
            -method:(read /sys/class/thermal/thermal_zone0/temp)
            -calculation:
                actual temperature = number_you_read / 1000
        --%>
        <%
            FileReader fr=new FileReader("/sys/class/thermal/thermal_zone0/temp");
            BufferedReader br=new BufferedReader(fr);
            String s=br.readLine();
            int temp = (Integer.parseInt(s))/1000;
            fr.close();
            br.close();
        %>                
<%--statebar info end--%>

结束

© 著作权归作者所有

李鱼跃龙门
粉丝 9
博文 17
码字总数 14068
作品 0
石家庄
程序员
私信 提问
[翻译完成] 树莓派配置文档config.txt说明

原文连接:http://elinux.org/RPiconfig.txt 由于树莓派并没有传统意义上的BIOS, 所以现在各种系统配置参数通常被存在"config.txt"这个文本文件中. 树莓派的config.txt文件会在ARM内核初始化...

八宝粥
2013/05/23
24.7K
0
用树莓派和DS18B20做个汽车温度记录仪[原创]

用树莓派和DS18B20做个汽车温度记录仪[原创] 很想知道夏日阳光暴晒下,汽车内的最高温度以及温度的变化情况。觉得用树莓派和DS18B20来实现应该很简单,于是就尝试捣鼓了一下,半天时间就搞定...

helesheng
2018/08/01
0
0
树莓派使用入门:你应该选择哪种树莓派?

在我们的《树莓派使用入门》系列的第一篇文章中,我们将学习选择符合你要求的树莓派型号的三个标准。 本文是《14 天学会树莓派使用》系列文章的第一篇。虽然本系列文章主要面向没有使用过树莓...

作者: Anderson Silva
03/12
0
0
基于树莓派如何开发机器人(附PPT+视频) | 硬创公开课

导语:树莓派是为学习计算机编程教育而设计的一种微型电脑,其系统是基于Linux的, 虽然只有信用卡大小,但视频、音频等功能通通皆有,可谓是“麻雀虽小,五脏俱全”。因此自问世以来,受到了...

金红
2017/03/09
0
0
树莓派4正式上线!「PC级」性能,支持4K双屏,仅售241

机器之心报道。 面对如此令人心满意足的全新树莓派,也许开发者们只想说一句话,上手盘它。 作为开发者最喜欢的开发板,树莓派的第四代产品带来了 3 倍以上的计算性能、新的操作系统、接口全...

06/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

拯救 项目经理个人时间的5个技巧

优秀的项目经理都有一个共同点,那就是良好的时间管理能力。专业的项目经理会确保他们的时间投入富有成效,尽可能避免时间浪费。 时间管理叫做GTD,即Getting Things Done——“把事情做完”...

Airship
21分钟前
3
0
前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
43
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部