.NET Core使用CZGL.SystemInfo库获取主机运行资源
简介
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
到此这篇关于.net core使用czgl.systeminfo库获取主机运行资源的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持