[golang]使用gopsutil获取系统信息

简介: [golang]使用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)
  }
}
相关文章
|
NoSQL 小程序 Cloud Native
你是使用什么工具调试 golang 程序的?
你是使用什么工具调试 golang 程序的?
175 0
|
3月前
|
Go
安装golang
golang官网——
40 1
|
5月前
|
网络协议 Go 网络安全
[golang]简单的文件上传下载
[golang]简单的文件上传下载
|
7月前
|
Go Windows
golang hello 安装环境异常【已解决】
golang hello 安装环境异常【已解决】
42 1
|
传感器 Go 智能硬件
使用Golang开发硬件驱动
使用Golang开发硬件驱动
|
Linux 编译器 Go
Golang 语言怎么安装多个 Golang 版本的环境?
Golang 语言怎么安装多个 Golang 版本的环境?
242 0
|
测试技术 Go
golang 测试模块使用
golang 测试模块使用
60 1
|
存储 编译器 Go
在本地部署Golang应用程序
在本地部署Golang应用程序
170 2
|
Java Go 开发工具
Go入门篇:(一)golang的安装和编辑工具安装
Go入门篇:(一)golang的安装和编辑工具安装
448 0
|
Linux Go
Linux 安装指定版本golang
Linux 安装指定版本golang
376 0