刚装完新主机,想随时看看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/路径——这些细节,等你真用上了再翻文档也不迟。