go读取Linux下cpu占用率、cpu温度、内存占用率及磁盘占用率

您所在的位置:网站首页 golang获取硬件信息 go读取Linux下cpu占用率、cpu温度、内存占用率及磁盘占用率

go读取Linux下cpu占用率、cpu温度、内存占用率及磁盘占用率

2023-12-11 11:05| 来源: 网络整理| 查看: 265

go读取Linux下cpu占用率、cpu温度、内存占用率及磁盘占用率

文章目录 go读取Linux下cpu占用率、cpu温度、内存占用率及磁盘占用率1. 前言2. 代码3. 测试结果4. 编译

1. 前言

后续会利用相关界面库来开发一个跨平台的小工具,这里的内容是该小工具的一部分,但是也挺常用的。

2. 代码 package main import ( "bytes" "fmt" "os/exec" "strconv" "strings" "time" "github.com/shirou/gopsutil/cpu" "github.com/shirou/gopsutil/disk" "github.com/shirou/gopsutil/mem" "github.com/wonderivan/logger" ) //获取CPU使用率 func GetCpuPercent() (float64, error) { percent, err := cpu.Percent(time.Second, false) if err != nil { logger.Error(err) return 0, err } return percent[0], nil } //获取CPU温度 func GetCpuTemp() (string, error) { cmd := exec.Command("cat", "/sys/class/thermal/thermal_zone0/temp") var out bytes.Buffer cmd.Stdout = &out err := cmd.Run() if err != nil { logger.Error(err) return "", err } logger.Debug(out.String()) tempStr := strings.Replace(out.String(), "\n", "", -1) temp, err := strconv.Atoi(tempStr) if err != nil { logger.Error(err) return "", err } temp = temp / 1000 logger.Debug(temp) return strconv.Itoa(temp), nil } //获取内存使用率 func GetMemPercent() (float64, error) { memInfo, err := mem.VirtualMemory() if err != nil { logger.Error(err) return 0, err } return memInfo.UsedPercent, nil } //获取硬盘使用率 func GetDiskPercent() (float64, error) { parts, err := disk.Partitions(true) if err != nil { logger.Error(err) return 0, err } diskInfo, err := disk.Usage(parts[0].Mountpoint) if err != nil { logger.Error(err) return 0, err } return diskInfo.UsedPercent, nil } func main() { cpuPer, err := GetCpuPercent() if err != nil { logger.Error(err) } else { cpuPer, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", cpuPer), 64) cpuPerStr := strconv.FormatFloat(cpuPer, 'f', -1, 64) logger.Debug("cpu:", cpuPerStr) } cpuTemp, err := GetCpuTemp() if err != nil { logger.Error(err) } else { logger.Debug("cpuTemp:", cpuTemp) } diskPer, err := GetDiskPercent() if err != nil { logger.Error(err) } else { diskPer, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", diskPer), 64) diskPerStr := strconv.FormatFloat(diskPer, 'f', -1, 64) logger.Debug("diskPer:", diskPerStr) } memPer, err := GetMemPercent() if err != nil { logger.Error(err) } else { memPer, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", memPer), 64) memPerStr := strconv.FormatFloat(memPer, 'f', -1, 64) logger.Debug("memPer:", memPerStr) } } 3. 测试结果 2021-08-27 09:48:48 [DEBG] [test.go:82] cpu: 1.01 2021-08-27 09:48:49 [DEBG] [test.go:38] 58000 2021-08-27 09:48:49 [DEBG] [test.go:46] 58 2021-08-27 09:48:49 [DEBG] [test.go:89] cpuTemp: 58 2021-08-27 09:48:49 [DEBG] [test.go:98] diskPer: 23.34 2021-08-27 09:48:49 [DEBG] [test.go:106] memPer: 5.95 4. 编译 $ ./compile.sh "arm" arm linux

简单的测试项目上传到csdn:https://download.csdn.net/download/weixin_39510813/21638214



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3