.NET Core 获取主机运行资源的库
简介
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
Windows 暂时不写了。剪头发去了。
.NET Core 获取主机运行资源的库的更多相关文章
- .NET Core 获取程序运行环境信息与反射的应用
目录 RuntimeInformation.Environment 获取信息 反射获取信息 获取某个属性的值以及别名 反射获取信息 使用 总结 笔者的九篇反射系统文章已经完结,但是笔者会持续更新反射在 ...
- .NET Core 跨平台资源监控库及 dotnet tool 小工具
目录 简介 dotnet tool 体验 CZGL.SystemInfo SystemPlatformInfo ProcessInfo 内存监控 NetworkInfo DiskInfo 简介 CZG ...
- ASP.NET Core中的运行状况检查
由卢克·莱瑟姆和格伦Condron ASP.NET Core提供了运行状况检查中间件和库,用于报告应用程序基础结构组件的运行状况. 运行状况检查由应用程序公开为HTTP终结点.可以为各种实时监视方案配 ...
- saltstack主机管理项目:编写插件基类-获取主机列表-提取yaml配置文件(四)
一.编写插件基类 1.目录结构 1.我是如何获知我有多少种系统? 当客户端第一连接过来的时候,我就已经把这些文件存下来了 ,存在到哪里了?存到数据库了 每次对主机发送命令的动作时,我从库里把数据取出来 ...
- (15)ASP.NET Core Web主机(IWebHostBuilder)
1.前言 ASP.NET Core应用程序可以配置和启动主机(Host).主机负责应用程序启动和生存期管理,配置服务器和请求处理管道.主机还可以设置日志记录.依赖关系注入和配置.而host主机又包括W ...
- (16)ASP.NET Core 通用主机(HostBuilder)
1.前言 ASP.NET Core应用程序可以配置和启动主机(Host).主机负责应用程序启动和生命周期管理.通用主机用于无法处理HTTP请求的应用程序.通用主机的用途是将HTTP管道从Web主机AP ...
- dotnet core 获取 MacAddress 地址方法
本文告诉大家如何在 dotnet core 获取 Mac 地址 因为在 dotnetcore 是没有直接和硬件相关的,所以无法通过 WMI 的方法获取当前设备的 Mac 地址 但是在 dotnet c ...
- 使用 C# 开发 Kubernetes 组件,获取集群资源信息
写什么呢 前段时间使用 C# 写了个项目,使用 Kubernetes API Server,获取信息以及监控 Kubernetes 资源,然后结合 Neting 做 API 网关. 体验地址 http ...
- linux中uptime命令获取主机运行时间和查询系统负载信息
系统中的uptime命令主要用于获取主机运行时间和查询linux系统负载等信息.uptime命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间.系统已经运行了多长时间.目前有多少登陆用户.系 ...
随机推荐
- 修改mysql密码报错: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
使用这种格式报错: 格式:mysql> set password for 用户名@localhost = password('新密码'); 找到另一种方法解决: ALTER USER 'root ...
- LGOJ2568 GCD
Description link 给定整数\(n\),\(1 \leq x,y \leq n\)且\(gcd(x,y)\)为质数的\((x,y)\)的对数 \[1\leq n\leq 10^7\] S ...
- Mock相关知识和简单应用
一.moco的简单应用 moco地址:https://github.com/dreamhead/moco api文档地址: https://github.com/dreamhead/moco/blob ...
- mac下停止和启动mysql命令
启动MySQL服务 sudo /usr/local/MYSQL/support-files/mysql.server start 停止MySQL服务 sudo /usr/local/mysql/s ...
- Office 365管理员设置
一.注册 1.输入网站 http://www.21vbluecloud.com/ ,进入世纪互联蓝云官方网站 2.选择 运营的产品->Office 365 3.选择了解更多 4.浏览根据不同的 ...
- Python爬虫之爬取站内所有图片
title date tags layut Python爬虫之爬取站内所有图片 2018-10-07 Python post 目标是 http://www.5442.com/meinv/ 如需在非li ...
- python的可迭代对象
今日所得 迭代器 可迭代对象 迭代器对象 for循环内部原理 生成器 生成器表达式 内会函数 面对过程编程 迭代器 迭代就是指更新换代的过程,要重复进行,而且每次的迭代都必须基于上一次的结果. 我们使 ...
- c/c++ main 函数命令行参数的使用
C程序最大的特点就是所有的程序都是用函数来装配的.main()称之为主函数,是所有程 序运行的入口.其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用的是有参函数,则参数在调用 ...
- python3爬虫:利用urllib与有道翻译获得翻译结果
在实现这一功能时遇到了一些困难,由于按照<零基础入门python>中的代码无法实现翻译,会爆出“您的请求来源非法,商业用途使用请关注有道翻译API官方网站“有道智云”: http://ai ...
- MyBatis学习笔记一:MyBatis最简单的环境搭建
MyBatis的最简单环境的搭建,使用xml配置,用来理解后面的复杂配置做基础 1.环境目录树(导入mybatis-3.4.1.jar包即可,这里是为后面的环境最准备使用了web项目,如果只是做 my ...