机器信息MachineInfo
不管是業(yè)務(wù)功能需要還是開(kāi)發(fā)診斷需要,經(jīng)常需要用到CPU內(nèi)存硬盤(pán)等信息,或者需要主板編號(hào)和系統(tǒng)編號(hào)做唯一設(shè)備標(biāo)識(shí)。于是設(shè)計(jì)了機(jī)器信息類(lèi) MachineInfo ,支持Windows、Linux、Raspberry等。
Nuget包:NewLife.Core
源碼地址:https://github.com/NewLifeX/X/blob/master/NewLife.Core/Common/MachineInfo.cs
快速入門(mén)
星塵代理StarAgent支持查看機(jī)器信息。
此處為語(yǔ)雀文檔,點(diǎn)擊鏈接查看:https://www.yuque.com/go/doc/16206433
Win10臺(tái)式機(jī)的機(jī)器信息:
嵌入式工業(yè)計(jì)算機(jī)的機(jī)器信息(帶有溫度值):
樹(shù)莓派Zero的機(jī)器信息(60~100塊錢(qián),跑Mono):
阿里云服務(wù)器的機(jī)器信息:
星塵上查看A5工業(yè)計(jì)算機(jī)的信息(http://star.newlifex.com/Nodes/NodeData?nodeId=59):
基礎(chǔ)信息
OSName,系統(tǒng)名稱(chēng),例如顯示“Windows 10 企業(yè)版”,而不是“Microsoft Windows NT 10.0.19042.0”
OSVersion,系統(tǒng)版本。
Product,產(chǎn)品名稱(chēng),制造商,例如“Alibaba Cloud ECS”
Processor,處理器型號(hào)
設(shè)備標(biāo)識(shí)
CpuID,處理器序列號(hào),曾經(jīng)唯一,某一年之后,這個(gè)序列號(hào)就變成了類(lèi)似批次號(hào)一樣,大量重復(fù)
UUID,硬件唯一標(biāo)識(shí),主板編號(hào)。小牌子主板該號(hào)碼大量重復(fù)
Guid,操作系統(tǒng)標(biāo)識(shí),重裝系統(tǒng)后改變。Ghost系統(tǒng)大量重復(fù)
DiskID,磁盤(pán)序列號(hào),遇到虛擬盤(pán)容易改變,例如云服務(wù)器或者樹(shù)莓派TF卡。在本地客戶(hù)端中該號(hào)碼唯一性很好。
在實(shí)際應(yīng)用中,星塵就采用UUID+Guid+DiskID混合后計(jì)算Crc的方式,來(lái)作為客戶(hù)端唯一標(biāo)識(shí)。
某些系統(tǒng)中,可能無(wú)法讀取到這些標(biāo)識(shí),特別是不同的Linux發(fā)行版。此時(shí)MachineInfo會(huì)生成隨機(jī)guid,并以0-開(kāi)頭。
狀態(tài)信息
Memory,內(nèi)存總量
AvailableMemory,可用內(nèi)存
CpuRate,CPU使用率,Windows和Linux介采用系統(tǒng)空閑時(shí)間和總處理器時(shí)間比值來(lái)計(jì)算
Temperature,溫度,主要用于Raspberry等嵌入式板卡中
緩存與刷新
機(jī)器硬件信息一般很少改變,為了加速系統(tǒng)啟動(dòng)速度,可以提前調(diào)用 MachineInfo.RegisterAsync() 來(lái)優(yōu)化。
該方法內(nèi)部會(huì)異步讀取機(jī)器硬件信息,并生成machine_info.json文件,緩存到本地Data數(shù)據(jù)目錄和系統(tǒng)Temp臨時(shí)目錄。本地Data數(shù)據(jù)目錄是為了方便下次啟動(dòng)加速,而系統(tǒng)Temp臨時(shí)目錄則是為其它應(yīng)用而優(yōu)化緩存。
同時(shí),某些信息需要系統(tǒng)管理員權(quán)限才能獲取,而并非所有應(yīng)用都有該權(quán)限,同一臺(tái)服務(wù)器上,只要有一個(gè)應(yīng)用具備管理員權(quán)限,其它所有應(yīng)用也可得到準(zhǔn)確的硬件信息。
再者,對(duì)于讀取不到或者不存在的硬件,例如主板UUID,會(huì)自動(dòng)生成一個(gè)隨機(jī)guid,放置在系統(tǒng)Temp目錄,可以避免同一臺(tái)服務(wù)器上的不同應(yīng)用生成不同的UUID。
為了讀取得到最新?tīng)顟B(tài)信息,讀取之前需要調(diào)用 Refresh 方法來(lái)刷新。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的机器信息MachineInfo的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: .NET 6 Preview 1发布!
- 下一篇: 使用 Tye 辅助开发 k8s 应用竟如