golang使用gopsutil获取系统信息

在python中有个psutil库用于获取系统信息,而go语言也有一个类似的库------gopsutil,功能差不多。

项目地址:https://github.com/shirou/gopsutil

安装:

复制代码
go get github.com/shirou/gopsutil/v3

获取CPU信息

复制代码
import (
    "github.com/shirou/gopsutil/v3/cpu"
    "fmt"
    "time"
)
func getCpuInfo() {
    // cpuInfo,err := cpu.Info()
    // if err != nil {
    //  fmt.Println("get cpu info fail, err: %v",err)
    // }
    // for _,ci := range cpuInfo {
    //  fmt.Printf("%v \n",ci)
    // }
    
    cpuPercent,_ := cpu.Percent(time.Second,true)
    fmt.Printf("CPU使用率: %.3f%% \n",cpuPercent[0])
    cpuNumber,_ := cpu.Counts(true)
    fmt.Printf("CPU核心数: %v \n",cpuNumber)
}

获取内存信息

复制代码
import (
    "github.com/shirou/gopsutil/v3/mem"
)
func getMemInfo() {
    memInfo,err := mem.VirtualMemory()
    if err != nil {
        fmt.Println("get memory info fail. err: ", err)
    }
    // 获取总内存大小,单位GB
    memTotal := memInfo.Total/1024/1024/1024
    // 获取已用内存大小,单位MB
    memUsed := memInfo.Used/1024/1024
    // 可用内存大小
    memAva := memInfo.Available/1024/1024
    // 内存可用率
    memUsedPercent := memInfo.UsedPercent
    fmt.Printf("总内存: %v GB, 已用内存: %v MB, 可用内存: %v MB, 内存使用率: %.3f %% \n",memTotal,memUsed,memAva,memUsedPercent)
}

获取系统负载

复制代码
import (
    "github.com/shirou/gopsutil/v3/load"
)
func getSysLoad() {
    loadInfo,err := load.Avg()
    if err != nil {
        fmt.Println("get average load fail. err: ",err)
    }
    fmt.Printf("系统平均负载: %v \n",loadInfo)
}