当前位置: 首页 > news >正文

CZGL.SystemInfo:跨平台的系统信息获取库

在软件开发和系统管理中,获取系统信息是一项常见的需求。无论是用于性能监控、硬件资产管理还是自动化部署,能够快速准确地获取机器的硬件和资源信息都至关重要。今天,我们将介绍一个名为 CZGL.SystemInfo 的开源项目,它是一个支持 Windows 和 Linux 等平台的库,能够高效地获取机器硬件信息、采集资源信息以及监控进程资源。

项目概述

CZGL.SystemInfo 是一个跨平台的系统信息获取库,由开发者 whuanle 创建并维护。该项目的目标是在不引入额外依赖的情况下,使用 .NET Runtime 本身的 API 或通过计算获得信息,提供高性能的计算方式以及缓存机制,从而提高性能。此外,该项目还提供了一个 dotnet tool 工具,方便用户通过命令行在终端中使用。

项目地址:https://github.com/whuanle/CZGL.SystemInfo.git

项目特点

跨平台支持

CZGL.SystemInfo 支持 Windows 和 Linux 等主流操作系统,具有良好的跨平台兼容性。这意味着无论是在 Windows 服务器还是 Linux 服务器上,都可以使用同一个库来获取系统信息,无需为不同平台编写不同的代码。

无额外依赖

项目在设计上尽量避免引入额外的第三方依赖,仅使用 .NET Runtime 本身的 API 或通过计算获得信息。这不仅减少了项目的复杂性,还降低了因依赖冲突导致的问题,确保了项目的稳定性和可靠性。

高性能计算

为了提高性能,CZGL.SystemInfo 提供了高性能的计算方式以及缓存机制。通过缓存常用的系统信息,避免了重复计算,从而显著提高了系统的响应速度和性能。

命令行工具

项目提供了一个 dotnet tool 工具,用户可以通过命令行在终端中快速使用该库的功能。这使得 CZGL.SystemInfo 不仅可以集成到开发项目中,还可以作为独立的工具使用,方便系统管理员和开发者快速获取系统信息。

丰富的功能

  • 硬件信息获取:可以获取 CPU 型号、核心数、磁盘序列号、内存大小等硬件信息。
  • 资源信息采集:可以实时采集 CPU 使用率、内存使用情况、磁盘 I/O 等资源信息。
  • 进程资源监控:可以监控特定进程的资源使用情况,如 CPU 使用率、内存占用等。

技术实现

Windows 平台

在 Windows 平台上,CZGL.SystemInfo 主要使用以下两个 .NET 类来获取系统信息:

  • System.Diagnostics.PerformanceCounter:用于获取系统性能数据,如 CPU 使用率、内存使用情况、磁盘 I/O 等。
  • System.Management.ManagementObjectSearcher:用于查询系统硬件信息,如 CPU 型号、磁盘序列号、主板信息等。

Linux 平台

在 Linux 平台上,CZGL.SystemInfo 通过以下方式获取系统信息:

  • 读取 /proc 文件系统:通过读取 /proc/cpuinfo/proc/meminfo 等文件获取硬件和资源信息。
  • 系统命令:使用系统命令(如 lscpudf 等)获取额外的系统信息。

使用方法

安装

通过 NuGet 安装

在 Visual Studio 中,可以通过 NuGet 包管理器搜索并安装 CZGL.SystemInfo。也可以在项目目录下打开终端,运行以下命令来安装:

dotnet add package CZGL.SystemInfo

或者指定版本安装:

dotnet add package CZGL.SystemInfo --version 1.0.1
使用 dotnet tool 安装

CZGL.SystemInfo 提供了一个简单的 dotnet tool 工具,无需 SDK,仅需 .NET runtime 即可使用。安装命令如下:

dotnet tool install --global csys

也可以指定版本安装:

dotnet tool install --global csys --version 1.0.3

安装完成后,可以通过命令 csys 调用该工具。如果在 Linux 下安装,还需要设置环境变量:

export PATH="$PATH:/home/{你的用户名}/.dotnet/tools"

然后输入 csys 命令进入小工具,根据提示输入相应命令即可查看系统资源信息。

从源码编译安装

如果需要从源码编译安装,可以先克隆项目到本地:

git clone https://github.com/whuanle/CZGL.SystemInfo.git

然后进入项目目录,使用以下命令进行编译:

dotnet build

编译成功后,可以在项目输出目录中找到编译生成的 DLL 文件,将其引用到你的项目中即可。

使用示例

获取 CPU 信息
using CZGL.SystemInfo;var cpuInfo = SystemInfo.GetCpuInfo();
Console.WriteLine($"CPU Model: {cpuInfo.Model}");
Console.WriteLine($"CPU Cores: {cpuInfo.CoreCount}");
获取内存信息
var memoryInfo = SystemInfo.GetMemoryInfo();
Console.WriteLine($"Total Memory: {memoryInfo.TotalMemory} MB");
Console.WriteLine($"Free Memory: {memoryInfo.FreeMemory} MB");
获取磁盘信息
var diskInfo = SystemInfo.GetDiskInfo();
foreach (var disk in diskInfo)
{Console.WriteLine($"Disk Name: {disk.Name}");Console.WriteLine($"Total Size: {disk.TotalSize} GB");Console.WriteLine($"Free Space: {disk.FreeSpace} GB");
}

命令行工具使用

安装完成后,可以通过以下命令使用 csys 工具:

csys --cpu
csys --memory
csys --disk

适用场景

系统监控

CZGL.SystemInfo 可以用于监控服务器或个人电脑的硬件和资源使用情况。通过实时采集 CPU 使用率、内存使用情况、磁盘 I/O 等信息,系统管理员可以及时发现性能瓶颈并采取相应的措施。

性能分析

开发者可以使用 CZGL.SystemInfo 来分析应用程序的性能。通过监控特定进程的资源使用情况,可以快速定位性能问题并进行优化。

自动化部署

在自动化脚本中使用 CZGL.SystemInfo,可以快速获取系统信息并进行相应的操作。例如,在部署新服务器时,可以自动获取硬件信息并记录到资产管理系统中。

硬件资产管理

CZGL.SystemInfo 可以用于记录和管理硬件资产信息。通过获取 CPU 型号、磁盘序列号等信息,可以方便地管理硬件资产,确保资产信息的准确性和完整性。

优势

轻量级

CZGL.SystemInfo 不依赖额外的第三方库,减少了项目的复杂性和依赖冲突的风险,确保了项目的稳定性和可靠性。

高性能

通过缓存和优化计算方式,CZGL.SystemInfo 提高了性能,减少了资源消耗。这使得它可以在高频率的监控场景中高效运行,而不会对系统性能产生负面影响。

易用性

CZGL.SystemInfo 提供了简单的 API 和命令行工具,易于集成和使用。无论是开发者还是系统管理员,都可以快速上手并使用该库的功能。

结语

CZGL.SystemInfo 是一个功能强大、跨平台、高性能的系统信息获取库。它不仅提供了丰富的功能,还具有轻量级、高性能和易用性的特点。无论是用于系统监控、性能分析、自动化部署还是硬件资产管理,CZGL.SystemInfo 都是一个值得尝试的工具。如果你对系统信息获取感兴趣,或者需要在项目中集成系统信息获取功能,不妨尝试一下 CZGL.SystemInfo,它可能会给你带来意想不到的惊喜。

相关文章:

  • Deep Research实践
  • 程序代码篇---随机数与随机数种子
  • 【Java学习笔记】Arrays类
  • C++17 和 C++20 中的新容器与工具:std::optional、std::variant 和 std::span
  • 大语言模型(LLM)面试问题集
  • 实验一:数据选择器实验
  • C++核心编程_继承同名静态成员处理方式
  • 深入理解链接与加载:从静态库到动态库的全流程解析
  • 【第八篇】 SpringBoot高级配置(配置篇)
  • 【SpringBoot自动化部署方法】
  • 图像超分辨率
  • 深度学习模块缝合
  • 线程与线程池
  • Pandas-如何正确将两张数据表进行合并
  • 碳排放智能分析与优化系统:工业减排的革命性突破
  • 高保真组件库:下拉框
  • 面试实例题
  • 【P2P】低延迟直播(尤其是 P2P 实时分发)常用的 x264 编码参数示例
  • 小游戏不能玩了?最好用flash扩展程序
  • 计算机网络笔记(三十)——5.2用户数据报协议UDP
  • 俄罗斯做电商网站/班级优化大师是干什么用的
  • cad二次开发网站/营销技巧培训
  • 全国企业信息官网网站/seo排名点击工具
  • 网站建设维护问题/网站搜索排优化怎么做
  • 自己怎么做视频网站/长春seo外包
  • 网站开发人员岗位/哈尔滨网站建设