机器信息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 方法来刷新。
机器信息MachineInfo相关推荐
- 性能测试用的机器信息
文章目录 机器信息简介 性能测试 CPU-Z 17.01.64 Geekbench 4.3.3 Geekbench 5 WinRar 5.61 自带测试 Super Pi V1.1 数组初始化测试 鲁 ...
- linux欢迎信息打印本机ip,Linux shell 登录显示欢迎信息或机器信息(示例代码)
写这个脚本的背景:因为管理的机器越来越多,每次登录机器都可以显示相应机器的信息防止误操作. 同时个人工作的环境有多个跳板机, 也容易操作错误, 所以每台机器上加个登录显示. 创建登录显示脚本 修改 ...
- Hadoop集群(第2期)_机器信息分布表
1.分布式环境搭建 采用4台安装Linux环境的机器来构建一个小规模的分布式集群. 图1 集群的架构 其中有一台机器是Master节点,即名称节点,另外三台是Slaver节点,即数据节点.这四台机器彼 ...
- linux查询机器信息,linux_机器信息查询
查看系统版本: [root@css-management ~]# lsb_release -a LSB Version: :core-4.0-amd64:core-4.0-noarch:graphic ...
- .NET获取机器信息
/// <summary>/// using System.Web;/// using System.Management;/// </summary>public stati ...
- python获取电脑的机器码_python获取机器信息脚本(网上寻找的)
# -*- coding: UTF-8 -*- import psutil import json import os import socket import struct import time ...
- Csv解析CsvFile
Excel导出是非常常见的需求,而大多数时候只需要导出CSV格式文件即可.Csv文件非常简单以及快速,除了日常导出报表,还可以导出大量数据用于跨系统数据交换,曾经多次遇到一次性导出数百万行数据.New ...
- CentOS7 自定义登录前后欢迎信息
一.摘要 本人当前使用的是阿里云 ECS 服务器,操作系统为 linux,发行版为 CentOS 7.4.1708.系统默认都已经提供了欢迎信息,但是自己也可以修改,实现个性化. 二.修改欢迎信息 2 ...
- Eureka获取注册信息
本文来说下Eureka获取注册信息 文章目录 Eureka-Client获取信息 启动获取 定时器获取 获取注册信息 全量获取 增量获取 合并数据 Eureka-Server接收请求 控制器接收请求 ...
最新文章
- oracle参数文件initorcl位置,ORACLE参数文件
- flutter 自定义tab导航-顶部导航-底部导航
- 【错误记录】Android 中使用 Kotlin 为 EditText 组件设置文本报错 ( Type mismatch. Required:Editable. Found:String )
- mxnet基础到提高(27)-Dense
- Android 动画(四)---逐帧动画
- java ip地址相关操作
- 解决 error: command 'swig' failed with exit status 1
- XidianOJ 1195 Industry of Orz Pandas
- java set排序_Java Set排序的方法
- ASP.NET MVC基于标注特性的Model验证:一个Model,多种验证规则
- myeclipse 添加mysql数据库_myeclipse添加数据库
- 一致性哈希和哈希槽对比
- 用电饭锅做蛋糕的做法
- 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno...
- vmlinux_32.lds.S
- 运筹说 第41期 | 运输问题硬核知识点梳理—表上作业法求解运输问题
- Weblogic下载,安装与插件配置
- 汇编语言C大调电子琴程序,用51单片机 汇编语言 做简单的电子琴
- Shopee平台发布针对疫情政策的通知
- 测试用例以及相关问题
热门文章
- Python 调度算法 死锁 静动态链接 分页分段
- mysql数值类型总结及常用函数
- 【python】python中的定义类属性和对像属性
- SAP ECC EHP7 RFC 发布成WebService
- ArrayBlockingQueue, LinkedBlockingQueue, ConcurrentLinkedQueue, RingBuffer
- vista 中php4, php5 共存
- 新的Teams API权限控制
- 在Data Lake Analytics中使用视图
- 练习题|网络编程-socket开发
- Win10系列:VC++ Direct3D模板介绍1