米尔电子
直播中

jf_50393217

4年用户 200经验值
擅长:可编程逻辑 嵌入式技术
私信 关注
[技术]

【米尔-全志T113-i开发板试用】3、使用golang获取系统信息

获取系统信息,我们可以使用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))

程序的整体输出如下

image.png

由于golang可以跨平台开发,我们先在X86的电脑上开发,然后交叉编译放到米尔的全志T113-i开发板上运行就可以了。板子上运行的效果如下。
image.png

由于T113-i是cortex a7架构的,我们需要在电脑上使用交叉编译的命令编译,然后将编译出来的文件,使用SCP指令发送到板子上去执行。编译命令如下

GOARCH=arm go build -o main main.go

更多回帖

发帖
×
20
完善资料,
赚取积分