获取系统信息,我们可以使用Linux的Proc文件系统,解析其中的文件来取得相应的信息,但是那样做太麻烦了,需要找很多资料,写挺多的代码。
我们可以使用现成的工具gopsutil
。gopsutil是一个用于获取系统资源利用情况的Go语言库。它提供了一组函数,可以用来获取CPU、内存、磁盘、网络等系统信息。这个库可以帮助开发人员监控和管理系统资源的使用,以便优化性能和确保系统稳定性。
例如获取CPU占用情况,可以直接使用"github.com/shirou/gopsutil/cpu"
这个包,代码如下
perPercents, _ := cpu.Percent(1*time.Second, false)
fmt.Printf("per percents:%v\\n", perPercents)
获取内存信息,可以使用"github.com/shirou/gopsutil/mem"
这个包,代码如下
v, _ := mem.VirtualMemory()
var availableMem = float64(v.Available)/(1024*1024*1024)
fmt.Printf("Available: %.2fG, UsedPercent:%.2f%%\\n", availableMem, v.UsedPercent)
获取系统信息,可以使用"github.com/shirou/gopsutil/host"
这个包,代码如下
infos, _ := cpu.Info()
fmt.Println(infos[0].ModelName)
version, _ := host.KernelVersion()
fmt.Println(version)
platform, family, version, _ := host.PlatformInformation()
fmt.Println("platform:", platform)
fmt.Println("family:", family)
fmt.Println("version:", version)
我们还可以获取开机时间,与现在的时间对比后,获取到开机时长。
timestamp, _ := host.BootTime()
t := time.Unix(int64(timestamp), 0)
now := time.Now()
duration := now.Sub(t)
fmt.Printf("Uptime: %v\\n", int(duration.Hours()/24))
程序的整体输出如下
由于golang可以跨平台开发,我们先在X86的电脑上开发,然后交叉编译放到米尔的全志T113-i开发板上运行就可以了。板子上运行的效果如下。
由于T113-i是cortex a7架构的,我们需要在电脑上使用交叉编译的命令编译,然后将编译出来的文件,使用SCP指令发送到板子上去执行。编译命令如下
GOARCH=arm go build -o main main.go
更多回帖