我的编程空间,编程开发者的网络收藏夹
学习永远不晚

.NET Core如何使用CZGL.SystemInfo库获取主机运行资源

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

.NET Core如何使用CZGL.SystemInfo库获取主机运行资源

今天就跟大家聊聊有关.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系统已运行时间(毫秒)    :    3227500Web程序核心框架版本    :    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.0CommonProgramFiles(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    :    93Running    :    1Sleeping    :    59Stopped    :    0Zombie    :    0CPU资源统计:UserSpace    :    1Sysctl    :    0.6NI    :    0Idolt    :    98.3WaitIO    :    0.1HardwareIRQ    :    0SoftwareInterrupts    :    0内存统计:Total    :    1009048Used    :    334040Free    :    85408Buffers    :    589600CanUsed    :    675008获取虚拟内存统计:Total    :    0Used    :    0Free    :    0AvailMem    :    505744

看完上述内容,你们对.NET Core如何使用CZGL.SystemInfo库获取主机运行资源有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

.NET Core如何使用CZGL.SystemInfo库获取主机运行资源

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

.NET Core如何使用CZGL.SystemInfo库获取主机运行资源

今天就跟大家聊聊有关.NET Core如何使用CZGL.SystemInfo库获取主机运行资源,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。简介CZGL.SystemInfo 是一个
2023-06-28

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录