[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 程序的?
185 0
|
NoSQL Java Go
记一次Golang内存分析——基于go pprof
## 1. 背景 阿里云Redis线上在某些任务流中使用`redis-port`来进行实例之间的数据同步。`redis-port`是一个MIT协议的开源软件,主要原理是从源实例读取RDB快照文件、解析、然后在目标实例上应用灌数据的写命令。为了限制每个进程的最大内存使用,我们使用cgroup来做隔离,最近线上出现redis-port在同步数据时`OOM`的情况,最高内存使用达到了`10G`以上
25272 0
|
4月前
|
Go
安装golang
golang官网——
51 1
|
6月前
|
NoSQL Java 测试技术
Golang内存分析工具gctrace和pprof实战
文章详细介绍了Golang的两个内存分析工具gctrace和pprof的使用方法,通过实例分析展示了如何通过gctrace跟踪GC的不同阶段耗时与内存量对比,以及如何使用pprof进行内存分析和调优。
148 0
Golang内存分析工具gctrace和pprof实战
|
6月前
|
网络协议 Go 网络安全
[golang]简单的文件上传下载
[golang]简单的文件上传下载
|
传感器 Go 智能硬件
使用Golang开发硬件驱动
使用Golang开发硬件驱动
|
8月前
|
Go Windows
golang hello 安装环境异常【已解决】
golang hello 安装环境异常【已解决】
57 1
|
9月前
|
JSON Go 开发工具
Golang日志库Zap基本使用
Golang日志库Zap基本使用
176 0
|
9月前
|
Go
Golang简易版RPC实现
Golang简易版RPC实现
47 0
|
测试技术 Go
golang 测试模块使用
golang 测试模块使用
64 1