[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)
  }
}
相关文章
|
12月前
|
NoSQL 小程序 Cloud Native
你是使用什么工具调试 golang 程序的?
你是使用什么工具调试 golang 程序的?
167 0
|
5月前
|
Go
golang环境安装异常【已解决】
golang环境安装异常【已解决】
26 2
|
1月前
|
Go
安装golang
golang官网——
31 1
|
3月前
|
NoSQL Java 测试技术
Golang内存分析工具gctrace和pprof实战
文章详细介绍了Golang的两个内存分析工具gctrace和pprof的使用方法,通过实例分析展示了如何通过gctrace跟踪GC的不同阶段耗时与内存量对比,以及如何使用pprof进行内存分析和调优。
79 0
Golang内存分析工具gctrace和pprof实战
|
3月前
|
Go
使用delve调试golang
使用delve调试golang
49 0
|
4月前
|
网络协议 Go C语言
在golang中调试时的指令和使用技巧
【7月更文挑战第4天】 本文介绍 Go调试工具`dlv`常用命令概览及其使用技巧。
90 2
在golang中调试时的指令和使用技巧
|
5月前
|
Go Windows
golang hello 安装环境异常【已解决】
golang hello 安装环境异常【已解决】
35 1
|
12月前
|
传感器 Go 智能硬件
使用Golang开发硬件驱动
使用Golang开发硬件驱动
|
Linux 编译器 Go
Golang 语言怎么安装多个 Golang 版本的环境?
Golang 语言怎么安装多个 Golang 版本的环境?
224 0
|
6月前
|
JSON Go 开发工具
Golang日志库Zap基本使用
Golang日志库Zap基本使用
144 0