当前位置: 首页 > 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,它可能会给你带来意想不到的惊喜。

http://www.xdnf.cn/news/930799.html

相关文章:

  • AUTOSAR实战教程--DoIP_01_配置项解释
  • 0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
  • Linux下GCC和C++实现统计Clickhouse数据仓库指定表中各字段的空值、空字符串或零值比例
  • Go基本语法——go语言中的四种变量定义方法
  • 【Java学习笔记】BigInteger 和 BigDecimal 类
  • 【Go语言基础【19】】接口:灵活实现多态的核心机制
  • 基于RT-DETR算法的夜间交通车辆与行人目标检测
  • FPGA静态功耗
  • 2025年与2030年AI及AI智能体 (Agent) 市场份额分析报告
  • 网络之交换机
  • 【题解-洛谷】B3626 跳跃机器人
  • JavaWeb——登录(14/16):登录校验-Interceptor-详解(使用细节、拦截路径的配置、匹配规则、执行流程、拦截器与过滤器的区别)
  • 【华为云Astro 轻应用】组装“待处理工单”页面示例
  • C语言基础面试问答
  • 【人工智能 | 项目开发】Python Flask实现本地AI大模型可视化界面
  • 苍穹外卖-day01
  • 用 DeepSeek 高效完成数据分析与挖掘
  • Bootstrap Table开源的企业级数据表格集成
  • 大数据学习(133)-Hive数据分析2
  • 论文笔记:Large Language Models for Next Point-of-Interest Recommendation
  • 云原生监控体系建设:Prometheus+Grafana的企业级实践
  • 作为点的对象CenterNet论文阅读
  • 【论文阅读30】Bi-LSTM(2024)
  • Spring Boot + Flink + FlinkCDC 实现 MySQL 同步到 MySQL
  • 【Java学习笔记】Arrays类
  • 视频音频去掉开头结尾 视频去掉前n秒后n秒 电视剧去掉开头歌曲
  • 408第一季 - 数据结构 - 图
  • 数据结构排序
  • AU音频软件|Audition 2025网盘下载与安装教程指南
  • AURA智能助手在物联网(IoT)和数字化改造领域的使用