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

Go语言系统信息获取示例

Go语言系统信息获取示例

本项目演示了如何在Go语言中获取系统信息,类似Python的platform模块功能。

主要功能

标准库 runtime

  • Go版本信息
  • 操作系统类型
  • 系统架构
  • CPU核心数
  • 内存统计信息
  • Goroutine信息

第三方库 gopsutil

  • 主机信息: 主机名、运行时间、操作系统版本、内核版本等
  • CPU信息: CPU型号、厂商、频率、核心数、使用率等
  • 内存信息: 总内存、已用内存、缓存、交换分区等
  • 磁盘信息: 磁盘分区、使用率、文件系统等
  • 网络信息: 网络接口、IP地址、网络IO统计等

项目结构

.
├── main.go                 # 主程序,展示基本系统信息
├── system_info_test.go     # 详细的测试文件,包含所有功能测试
├── go.mod                  # Go模块文件
└── go.sum                  # 依赖校验文件

依赖

主要依赖第三方库:

  • github.com/shirou/gopsutil/v3 - 跨平台的系统信息获取库

安装和运行

  1. 初始化项目:

    go mod init system-info-test
    go get github.com/shirou/gopsutil/v3
    go mod tidy
    
  2. 运行主程序:

    go run main.go
    
  3. 运行详细测试:

    go test -v
    
  4. 运行性能测试:

    go test -bench=.
    
  5. 运行特定测试:

    go test -v -run TestCPUInfo        # 只测试CPU信息
    go test -v -run TestMemoryInfo     # 只测试内存信息
    go test -v -run TestDiskInfo       # 只测试磁盘信息
    

API对比

Python platform 模块对比

Python platform Go gopsutil 功能描述
platform.system() runtime.GOOS 操作系统名称
platform.machine() runtime.GOARCH 机器架构
platform.processor() cpu.Info() 处理器信息
platform.platform() host.Info() 平台信息
platform.node() host.Info().Hostname 主机名
platform.release() host.Info().KernelVersion 系统发行版本

示例代码

package mainimport ("fmt""runtime""github.com/shirou/gopsutil/v3/host""github.com/shirou/gopsutil/v3/cpu""github.com/shirou/gopsutil/v3/mem"
)func main() {// 获取基本信息fmt.Printf("操作系统: %s\n", runtime.GOOS)fmt.Printf("架构: %s\n", runtime.GOARCH)fmt.Printf("CPU核心数: %d\n", runtime.NumCPU())// 获取主机信息hostInfo, _ := host.Info()fmt.Printf("主机名: %s\n", hostInfo.Hostname)fmt.Printf("平台: %s %s\n", hostInfo.Platform, hostInfo.PlatformVersion)// 获取CPU信息cpuInfo, _ := cpu.Info()if len(cpuInfo) > 0 {fmt.Printf("CPU: %s\n", cpuInfo[0].ModelName)}// 获取内存信息memInfo, _ := mem.VirtualMemory()fmt.Printf("总内存: %d MB\n", memInfo.Total/1024/1024)fmt.Printf("内存使用率: %.2f%%\n", memInfo.UsedPercent)
}

测试功能

测试文件 system_info_test.go 包含以下测试:

  1. TestSystemInfo - 基本系统信息
  2. TestHostInfo - 主机详细信息
  3. TestCPUInfo - CPU详细信息和使用率
  4. TestMemoryInfo - 内存和交换分区信息
  5. TestDiskInfo - 磁盘分区和使用情况
  6. TestNetworkInfo - 网络接口和IO统计
  7. TestAllSystemInfo - 综合测试
  8. BenchmarkCPUUsage - CPU使用率获取性能测试
  9. BenchmarkMemoryInfo - 内存信息获取性能测试

跨平台支持

gopsutil 库支持多个操作系统:

  • Linux
  • Windows
  • macOS
  • FreeBSD
  • OpenBSD

注意事项

  1. 某些系统信息获取可能需要管理员权限
  2. 网络信息在不同操作系统上可能有差异
  3. CPU使用率获取需要一定时间间隔来计算
  4. 部分功能在虚拟化环境中可能受限

扩展功能

可以进一步扩展获取:

  • 进程信息
  • 服务信息
  • 温度传感器
  • GPU信息
  • 负载均衡信息

相关资源

  • gopsutil GitHub
  • Go runtime 包文档
  • 系统监控最佳实践
http://www.hskmm.com/?act=detail&tid=13

相关文章:

  • OpenCSG 哈投达成战略合作,加速东北企业AI转型
  • Rocky9和Ubuntu使用pip安装python的库mysqlclient失败解决方式
  • 收录笔记:蜘蛛池,蜘蛛池出租 - 蚂蚁站群
  • 在Spring Boot Admin中根据Nacos的命名空间来区分和管理不同的环境
  • npm 无法加载文件npm.ps1
  • 蜘蛛池出租的使用效果 - 蚂蚁站群
  • REACT
  • 宽输入 低纹波 高效率 宽输入升降压型正负线性电源模块 BSN30WL
  • 【前端开发】windows激活自测可用,office也可激活
  • 核心漏洞开发实战:Win32漏洞挖掘与防护绕过深度解析
  • PostgreSQL 大对象管理指南:pg_largeobject 从原理到实践