Golang获取Windows系统的CPU、内存和磁盘使用率的方法

Golang获取Windows系统的CPU、内存和磁盘使用率的方法 大家好,

有没有人知道如何在Windows系统中获取CPU、内存和磁盘的使用情况? 在Linux系统中获取这些信息并不困难,但我却很难从Windows系统中获取到任何相关信息。

2 回复

更多关于Golang获取Windows系统的CPU、内存和磁盘使用率的方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Windows系统中获取系统资源使用率,可以使用gopsutil库,这是跨平台的系统监控库。以下是具体实现方法:

package main

import (
    "fmt"
    "github.com/shirou/gopsutil/v3/cpu"
    "github.com/shirou/gopsutil/v3/disk"
    "github.com/shirou/gopsutil/v3/mem"
    "time"
)

func main() {
    // 获取CPU使用率
    cpuPercent, err := cpu.Percent(time.Second, false)
    if err != nil {
        fmt.Printf("获取CPU使用率失败: %v\n", err)
    } else {
        fmt.Printf("CPU使用率: %.2f%%\n", cpuPercent[0])
    }

    // 获取内存使用率
    memInfo, err := mem.VirtualMemory()
    if err != nil {
        fmt.Printf("获取内存信息失败: %v\n", err)
    } else {
        fmt.Printf("内存使用率: %.2f%%\n", memInfo.UsedPercent)
        fmt.Printf("总内存: %.2f GB\n", float64(memInfo.Total)/1024/1024/1024)
        fmt.Printf("已用内存: %.2f GB\n", float64(memInfo.Used)/1024/1024/1024)
    }

    // 获取磁盘使用率(C盘)
    diskInfo, err := disk.Usage("C:")
    if err != nil {
        fmt.Printf("获取磁盘信息失败: %v\n", err)
    } else {
        fmt.Printf("C盘使用率: %.2f%%\n", diskInfo.UsedPercent)
        fmt.Printf("C盘总空间: %.2f GB\n", float64(diskInfo.Total)/1024/1024/1024)
        fmt.Printf("C盘可用空间: %.2f GB\n", float64(diskInfo.Free)/1024/1024/1024)
    }
}

如果需要获取所有磁盘的信息:

// 获取所有磁盘分区
partitions, err := disk.Partitions(true)
if err != nil {
    fmt.Printf("获取磁盘分区失败: %v\n", err)
    return
}

for _, partition := range partitions {
    usage, err := disk.Usage(partition.Mountpoint)
    if err != nil {
        continue
    }
    fmt.Printf("磁盘 %s 使用率: %.2f%%\n", partition.Mountpoint, usage.UsedPercent)
}

首先安装依赖:

go get github.com/shirou/gopsutil/v3

这个库通过调用Windows API(如PDH API)来获取系统性能数据,在Windows系统上运行良好。

回到顶部