机器信息MachineInfo

不管是业务功能需要还是开发诊断需要,经常需要用到CPU内存硬盘等信息,或者需要主板编号和系统编号做唯一设备标识。于是设计了机器信息类 MachineInfo ,支持Windows、Linux、Raspberry等。

Nuget包:NewLife.Core

源码地址:https://github.com/NewLifeX/X/blob/master/NewLife.Core/Common/MachineInfo.cs

快速入门

星尘代理StarAgent支持查看机器信息。

此处为语雀文档,点击链接查看:https://www.yuque.com/go/doc/16206433

Win10台式机的机器信息:

嵌入式工业计算机的机器信息(带有温度值):

树莓派Zero的机器信息(60~100块钱,跑Mono):

阿里云服务器的机器信息:

星尘上查看A5工业计算机的信息(http://star.newlifex.com/Nodes/NodeData?nodeId=59):

基础信息

  • OSName,系统名称,例如显示“Windows 10 企业版”,而不是“Microsoft Windows NT 10.0.19042.0”

  • OSVersion,系统版本。

  • Product,产品名称,制造商,例如“Alibaba Cloud ECS”

  • Processor,处理器型号

设备标识

  • CpuID,处理器序列号,曾经唯一,某一年之后,这个序列号就变成了类似批次号一样,大量重复

  • UUID,硬件唯一标识,主板编号。小牌子主板该号码大量重复

  • Guid,操作系统标识,重装系统后改变。Ghost系统大量重复

  • DiskID,磁盘序列号,遇到虚拟盘容易改变,例如云服务器或者树莓派TF卡。在本地客户端中该号码唯一性很好。

在实际应用中,星尘就采用UUID+Guid+DiskID混合后计算Crc的方式,来作为客户端唯一标识。

某些系统中,可能无法读取到这些标识,特别是不同的Linux发行版。此时MachineInfo会生成随机guid,并以0-开头。

状态信息

  • Memory,内存总量

  • AvailableMemory,可用内存

  • CpuRate,CPU使用率,Windows和Linux介采用系统空闲时间和总处理器时间比值来计算

  • Temperature,温度,主要用于Raspberry等嵌入式板卡中

缓存与刷新

机器硬件信息一般很少改变,为了加速系统启动速度,可以提前调用 MachineInfo.RegisterAsync() 来优化。

该方法内部会异步读取机器硬件信息,并生成machine_info.json文件,缓存到本地Data数据目录和系统Temp临时目录。本地Data数据目录是为了方便下次启动加速,而系统Temp临时目录则是为其它应用而优化缓存。

同时,某些信息需要系统管理员权限才能获取,而并非所有应用都有该权限,同一台服务器上,只要有一个应用具备管理员权限,其它所有应用也可得到准确的硬件信息。

再者,对于读取不到或者不存在的硬件,例如主板UUID,会自动生成一个随机guid,放置在系统Temp目录,可以避免同一台服务器上的不同应用生成不同的UUID。

为了读取得到最新状态信息,读取之前需要调用 Refresh 方法来刷新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值