網站首頁 編程語言 正文
簡介
CZGL.SystemInfo 是一個支持 Windows 和 Linux 的資源信息獲取庫,用于獲取系統環境、機器資源信息、系統資源使用情況。
Nuget 搜索?CZGL.SystemInfo
?即可安裝。
類庫中每一個屬性和方法,我都加上了注釋,調用時可以看得到。
平臺通用
CZGL.SystemInfo 命名空間下,有個 EnvironmentInfo 靜態類,用于獲取各種信息。
CZGL.SystemInfo.Info 命名空間中,有三個類型,用于獲取和記錄不同類型的信息。
MachineRunInfo
?用來獲取機器運行使用的資源信息;
SystemPlatformInfo
?用來獲取系統平臺信息;
SystemRunEvnInfo
?獲取系統屬性信息;
EnvironmentInfo.GetEnvironmentVariables()
?用于獲取系統所有的環境變量。
獲取某個屬性信息
你可以這樣使用
// new實例獲取 MachineRunInfo m = new MachineRunInfo(); Console.WriteLine("當前進程已用內存" + m.ThisUsedMem);
上面三個類型中,都有一個靜態實例,也可以這樣使用
Console.WriteLine("當前進程已用內存" + MachineRunInfo.Instance.ThisUsedMem);
MachineRunInfo
?、SystemPlatformInfo
?、?SystemRunEvnInfo
?三個類型,直接使用屬性即可輸出信息。
獲取所有屬性信息
如果你想一次性輸出到控制臺或者做一個統計,可以使用 EnvironmentInfo 中的方法來快速生成信息。
如果當前系統是中文,會輸出中文備注。
// 注意,一些資源的單位都是 kb // 獲取系統平臺信息 KeyValuePair<string, object>[] a = env.GetSystemPlatformInfoValue(); // 獲取系統運行屬性信息 KeyValuePair<string, object>[] b = env.GetSystemRunInfoValue(); // 獲取機器資源信息 KeyValuePair<string, object>[] c = env.GetMachineInfoValue(); // 獲取系統所有環境變量 KeyValuePair<string, object>[] d = env.GetEnvironmentVariables();
打印示例
Console.WriteLine("\n系統平臺信息:\n"); foreach (var item in a) { Console.WriteLine($"{item.Key} : {item.Value}"); } Console.WriteLine("\n\n系統運行屬性信息:\n"); foreach (var item in b) { Console.WriteLine($"{item.Key} : {item.Value}"); } Console.WriteLine("\n\n機器資源信息:\n"); foreach (var item in c) { Console.WriteLine($"{item.Key} : {item.Value}"); } Console.WriteLine("\n\n系統所有環境變量:\n"); foreach (var item in d) { Console.WriteLine($"{item.Key} : {item.Value}"); }
輸出(部分顯示)
系統平臺信息: 運行框架 : .NET Core 3.1.0 操作系統 : Microsoft Windows 10.0.17763 操作系統版本 : Microsoft Windows NT 6.2.9200.0 平臺架構 : X64 系統運行屬性信息: 機器名稱 : aaaa-PC 當前關聯用戶名 : aaa 用戶網絡域名 : aaa-PC 系統已運行時間(毫秒) : 3227500 Web程序核心框架版本 : 3.1.0 是否在交互模式中運行 : True 分區磁盤 : D:\, E:\, F:\, G:\, H:\, X:\ 系統目錄 : X:\windows\system32 機器資源信息: 當前進程已使用物理內存 : 20020 當前進程已占耗CPU時間 : 328.125 系統所有進程各種使用的內存 : System.Collections.Generic.KeyValuePair`2[System.String,System.Int64][] 系統已使用內存 : 5988340 系統所有環境變量: VisualStudioVersion : 16.0 CommonProgramFiles(x86) : x:\Program Files (x86)\Common Files
還可以使用?(string, KeyValuePair<string, object>[]) GetMachineInfo()
?等,string 返回此類型信息的說明。
Linux
Nuget 搜索?CZGL.SystemInfo.Linux
?安裝。
在這個庫中,Linux 資源信息包括 進程計量,內存計量,CPU計量,虛擬內存計量,各種進程運行信息計量。
要通過實例化?DynamicInfo
?才能獲取。
有 5 個對象用于映射相應信息。
- Tasks:用于統計進程數量,處于不同狀態下的進程數。
- CpuState:CPU 使用情況,CPU 各種負載信息。
- Mem:物理內存和緩存使用情況。
- Swap:虛擬內存使用情況。
- PidInfo:一個進程的運行資源信息。
他們都有一個 IsSuccess 屬性,用來判斷是否能正常獲取到 Linux 的信息。
實例化獲取對象
DynamicInfo info = new DynamicInfo();
直接使用
可以通過方法獲取到相應的對象。
var item = info.GetTasks(); Console.WriteLine("系統中共有進程數 :" + item.Total); Console.WriteLine("正在運行的進程數 :" + item.Running);
批量獲取
以下是批量獲取的示例,每個屬性和屬性值生成一個鍵值對,可以批量獲取信息列表。
如果當前系統是中文,會輸出中文備注。
// 獲取進程統計 KeyValuePair<string, object>[] a = info.GetRefTasks(); // 獲取CPU資源統計 KeyValuePair<string, object>[] b = info.GetRefCpuState(); // 獲取內存統計 KeyValuePair<string, object>[] c = info.GetRefMem(); // 獲取虛擬內存統計 KeyValuePair<string, object>[] d = info.GetRefSwap(); Dictionary<int, PidInfo> dic = info.GetPidInfo(); Console.WriteLine("\n進程統計:\n"); foreach (var item in a) { Console.WriteLine($"{item.Key} : {item.Value}"); } Console.WriteLine("\n\nCPU資源統計:\n"); foreach (var item in b) { Console.WriteLine($"{item.Key} : {item.Value}"); } Console.WriteLine("\n\n內存統計:\n"); foreach (var item in c) { Console.WriteLine($"{item.Key} : {item.Value}"); } Console.WriteLine("\n\n獲取虛擬內存統計:\n"); foreach (var item in d) { Console.WriteLine($"{item.Key} : {item.Value}"); } Console.WriteLine("\n\n 各個進程使用的資源:\n"); Console.WriteLine(" 進程Id 進程名稱 所屬用戶 優化級 高低優先級 虛擬內存 物理內存 共享內存 進程狀態 占用系統CPU(%) 占用內存(%d) "); foreach (var item in dic) { Console.WriteLine($"{item.Key} {item.Value.Command} {item.Value.User} {item.Value.PR} " + $"{item.Value.Nice} {item.Value.VIRT} {item.Value.RES} {item.Value.SHR} " + $"{item.Value.State} {item.Value.CPU} {item.Value.Mem}"); } }
輸出
進程統計: Total : 93 Running : 1 Sleeping : 59 Stopped : 0 Zombie : 0 CPU資源統計: UserSpace : 1 Sysctl : 0.6 NI : 0 Idolt : 98.3 WaitIO : 0.1 HardwareIRQ : 0 SoftwareInterrupts : 0 內存統計: Total : 1009048 Used : 334040 Free : 85408 Buffers : 589600 CanUsed : 675008 獲取虛擬內存統計: Total : 0 Used : 0 Free : 0 AvailMem : 505744
原文鏈接:https://www.cnblogs.com/whuanle/p/12435413.html
相關推薦
- 2022-08-06 一次性徹底講透Python中pd.concat與pd.merge_python
- 2023-01-19 React?classnames原理及測試用例_React
- 2023-07-07 Linux服務器zip安裝,及壓縮解壓
- 2022-06-15 Python文件的壓縮與解壓_python
- 2022-05-03 Shell內置命令之exit的語法與實例_linux shell
- 2022-07-29 Linux中Vi和Vim編輯器用法詳解_linux shell
- 2022-11-25 Python中日期和時間的用法超強總結_python
- 2023-04-29 C++數組模擬之單鏈表與雙鏈表和棧和隊列的實現過程_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支