机器信息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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET 6 Preview 1发布!
- 下一篇: 使用 Tye 辅助开发 k8s 应用竟如