不管是业务功能需要还是开发诊断需要,经常需要用到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 方法来刷新。

机器信息MachineInfo相关推荐

  1. 性能测试用的机器信息

    文章目录 机器信息简介 性能测试 CPU-Z 17.01.64 Geekbench 4.3.3 Geekbench 5 WinRar 5.61 自带测试 Super Pi V1.1 数组初始化测试 鲁 ...

  2. linux欢迎信息打印本机ip,Linux shell 登录显示欢迎信息或机器信息(示例代码)

    写这个脚本的背景:因为管理的机器越来越多,每次登录机器都可以显示相应机器的信息防止误操作. 同时个人工作的环境有多个跳板机, 也容易操作错误,  所以每台机器上加个登录显示. 创建登录显示脚本 修改 ...

  3. Hadoop集群(第2期)_机器信息分布表

    1.分布式环境搭建 采用4台安装Linux环境的机器来构建一个小规模的分布式集群. 图1 集群的架构 其中有一台机器是Master节点,即名称节点,另外三台是Slaver节点,即数据节点.这四台机器彼 ...

  4. linux查询机器信息,linux_机器信息查询

    查看系统版本: [root@css-management ~]# lsb_release -a LSB Version: :core-4.0-amd64:core-4.0-noarch:graphic ...

  5. .NET获取机器信息

    /// <summary>/// using System.Web;/// using System.Management;/// </summary>public stati ...

  6. python获取电脑的机器码_python获取机器信息脚本(网上寻找的)

    # -*- coding: UTF-8 -*- import psutil import json import os import socket import struct import time ...

  7. Csv解析CsvFile

    Excel导出是非常常见的需求,而大多数时候只需要导出CSV格式文件即可.Csv文件非常简单以及快速,除了日常导出报表,还可以导出大量数据用于跨系统数据交换,曾经多次遇到一次性导出数百万行数据.New ...

  8. CentOS7 自定义登录前后欢迎信息

    一.摘要 本人当前使用的是阿里云 ECS 服务器,操作系统为 linux,发行版为 CentOS 7.4.1708.系统默认都已经提供了欢迎信息,但是自己也可以修改,实现个性化. 二.修改欢迎信息 2 ...

  9. Eureka获取注册信息

    本文来说下Eureka获取注册信息 文章目录 Eureka-Client获取信息 启动获取 定时器获取 获取注册信息 全量获取 增量获取 合并数据 Eureka-Server接收请求 控制器接收请求 ...

最新文章

  1. oracle参数文件initorcl位置,ORACLE参数文件
  2. flutter 自定义tab导航-顶部导航-底部导航
  3. 【错误记录】Android 中使用 Kotlin 为 EditText 组件设置文本报错 ( Type mismatch. Required:Editable. Found:String )
  4. mxnet基础到提高(27)-Dense
  5. Android 动画(四)---逐帧动画
  6. java ip地址相关操作
  7. 解决 error: command 'swig' failed with exit status 1
  8. XidianOJ 1195 Industry of Orz Pandas
  9. java set排序_Java Set排序的方法
  10. ASP.NET MVC基于标注特性的Model验证:一个Model,多种验证规则
  11. myeclipse 添加mysql数据库_myeclipse添加数据库
  12. 一致性哈希和哈希槽对比
  13. 用电饭锅做蛋糕的做法
  14. 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno...
  15. vmlinux_32.lds.S
  16. 运筹说 第41期 | 运输问题硬核知识点梳理—表上作业法求解运输问题
  17. Weblogic下载,安装与插件配置
  18. 汇编语言C大调电子琴程序,用51单片机 汇编语言 做简单的电子琴
  19. Shopee平台发布针对疫情政策的通知
  20. 测试用例以及相关问题

热门文章

  1. Python 调度算法 死锁 静动态链接 分页分段
  2. mysql数值类型总结及常用函数
  3. 【python】python中的定义类属性和对像属性
  4. SAP ECC EHP7 RFC 发布成WebService
  5. ArrayBlockingQueue, LinkedBlockingQueue, ConcurrentLinkedQueue, RingBuffer
  6. vista 中php4, php5 共存
  7. 新的Teams API权限控制
  8. 在Data Lake Analytics中使用视图
  9. 练习题|网络编程-socket开发
  10. Win10系列:VC++ Direct3D模板介绍1