1. 程式人生 > 其它 >【go筆記】使用gopsutil獲取系統資訊

【go筆記】使用gopsutil獲取系統資訊

go語言學習筆記之使用gopsutil獲取系統資訊

前言

在python中有個psutil庫用於獲取系統資訊,而go語言也有一個類似的庫——gopsutil,功能差不多。

專案地址:https://github.com/shirou/gopsutil

安裝:

go get github.com/shirou/gopsutil/v3

獲取CPU資訊

import (
	"github.com/shirou/gopsutil/v3/cpu"
    "fmt"
    "time"
)

func getCpuInfo() {
	// cpuInfo,err := cpu.Info()
	// if err != nil {
	// 	fmt.Println("get cpu info fail, err: %v",err)
	// }
	// for _,ci := range cpuInfo {
	// 	fmt.Printf("%v \n",ci)
	// }
	
	cpuPercent,_ := cpu.Percent(time.Second,true)
	fmt.Printf("CPU使用率: %.3f%% \n",cpuPercent[0])
	cpuNumber,_ := cpu.Counts(true)
	fmt.Printf("CPU核心數: %v \n",cpuNumber)
}

獲取記憶體資訊

import (
	"github.com/shirou/gopsutil/v3/mem"
)

func getMemInfo() {
	memInfo,err := mem.VirtualMemory()
	if err != nil {
		fmt.Println("get memory info fail. err: ", err)
	}
	// 獲取總記憶體大小,單位GB
	memTotal := memInfo.Total/1024/1024/1024
	// 獲取已用記憶體大小,單位MB
	memUsed := memInfo.Used/1024/1024
	// 可用記憶體大小
	memAva := memInfo.Available/1024/1024
	// 記憶體可用率
	memUsedPercent := memInfo.UsedPercent
	fmt.Printf("總記憶體: %v GB, 已用記憶體: %v MB, 可用記憶體: %v MB, 記憶體使用率: %.3f %% \n",memTotal,memUsed,memAva,memUsedPercent)
}

獲取系統負載

import (
	"github.com/shirou/gopsutil/v3/load"
)
func getSysLoad() {
	loadInfo,err := load.Avg()
	if err != nil {
		fmt.Println("get average load fail. err: ",err)
	}
	fmt.Printf("系統平均負載: %v \n",loadInfo)
}

獲取主機資訊

import "github.com/shirou/gopsutil/v3/host"
func getHostInfo() {
	hostInfo,err := host.Info()
	if err != nil {
		fmt.Println("get host info fail, error: ",err)
	}
	fmt.Printf("hostname is: %v, os platform: %v \n",hostInfo.Hostname,hostInfo.Platform)
}

獲取硬碟儲存資訊

import "github.com/shirou/gopsutil/v3/disk"
func getDiskInfo() {
	diskPart,err := disk.Partitions(false)
	if err != nil {
		fmt.Println(err)
	}
	// fmt.Println(diskPart)
	for _,dp := range diskPart {
		fmt.Println(dp)
		diskUsed,_ := disk.Usage(dp.Mountpoint)
		fmt.Printf("分割槽總大小: %d MB \n",diskUsed.Total/1024/1024)
		fmt.Printf("分割槽使用率: %.3f %% \n",diskUsed.UsedPercent)
        fmt.Printf("分割槽inode使用率: %.3f %% \n",diskUsed.InodesUsedPercent)
	}
}