电脑帮手
柔彩主题三 · 更轻盈的阅读体验

用Go语言搭个轻量监控系统,装机后自己就能看CPU、内存实时状态

发布时间:2026-03-31 23:31:16 阅读:7 次

刚装完新主机,想随时看看CPU温度有没有飙高?内存用了多少?硬盘读写是不是卡顿?别急着装一堆花里胡哨的监控软件——用Go写个几行代码的小工具,编译成单文件,丢进开机启动,比啥都干净利索。

为啥选Go?

不是赶时髦。Go编译出来就是个静态二进制文件,不依赖运行环境,Win/macOS/Linux全通吃;启动快、占内存小,后台跑着几乎感觉不到存在。你装机时配的i5+16G,它只吃几MB内存,完全不抢资源。

三步跑起来

先装Go(官网下载安装包,下一步下一步就行),然后新建一个monitor.go文件:

package main

import (
	"fmt"
	"log"
	"os/exec"
	"runtime"
	"time"
)

func getCPUPercent() string {
	if runtime.GOOS == "windows" {
		out, _ := exec.Command("wmic", "cpu", "get", "loadpercentage").Output()
		return string(out)
	}
	return "not implemented"
}

func main() {
	for {
		fmt.Printf("[%s] CPU: %s", time.Now().Format("15:04:05"), getCPUPercent())
		time.Sleep(2 * time.Second)
	}
}

保存后命令行执行:go run monitor.go,就能看到每两秒刷一次CPU使用率。想打包成exe?直接GOOS=windows go build -o monitor.exe monitor.go(macOS/Linux同理换GOOS值)。

进阶一点:加个Web界面

嫌黑窗口不够直观?加几行HTTP服务代码,本地打开http://127.0.0.1:8080就能看图表:

func handler(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-Type", "text/html; charset=utf-8")
	fmt.Fprintf(w, `

本机状态

CPU: %s

内存: %d MB 已用

`, getCPUPercent(), int64(runtime.MemStats{}.Alloc/1024/1024)) } func main() { http.HandleFunc("/", handler) log.Println("监控服务已启动:http://127.0.0.1:8080") http.ListenAndServe(":8080", nil) }

这玩意儿没数据库、不连云端,所有数据只在你本地跑,隐私安全有底。装机完成后顺手配上,就像给新电脑装了个“体检仪”,心里踏实。

提醒一句:Windows下查温度需要额外调用OpenHardwareMonitor或HWiNFO的CLI接口,Linux可直接读/sys/class/thermal/路径——这些细节,等你真用上了再翻文档也不迟。