[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)
  }
}
相关文章
ECharts 饼图数据放在饼图内部显示
ECharts 饼图数据放在饼图内部显示
1107 0
|
9月前
|
Linux Go iOS开发
Go语言100个实战案例-进阶与部署篇:使用Go打包生成可执行文件
本文详解Go语言打包与跨平台编译技巧,涵盖`go build`命令、多平台构建、二进制优化及资源嵌入(embed),助你将项目编译为无依赖的独立可执行文件,轻松实现高效分发与部署。
1478 162
|
数据采集 关系型数据库 MySQL
python-协程(async、await关键字与asyncio)
python-协程(async、await关键字与asyncio)
2204 0
|
10月前
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。
|
5月前
|
安全 网络协议 数据安全/隐私保护
docker-compose 部署clickhouse-server:24.6
本文介绍了如何使用 Docker Compose 快速部署 ClickHouse Server 24.6 单节点服务,含端口映射(8123/9000)、数据日志持久化、密码安全配置及自定义 config.xml 示例,并提供启动验证命令与生产安全提示。
846 0
|
11月前
|
存储 监控 分布式数据库
ClickHouse分布式数据库动态伸缩(弹性扩缩容)的实现
实现ClickHouse数据库的动态伸缩需要持续的维护和精细的操作。从集群配置到数据迁移,再到监控和自动化,每一步都要仔细管理以确保服务的可靠性和性能。这些活动可以显著提高应用的响应性和成本效率,帮助业务根据实际需求灵活调整资源分配。
579 10
|
存储 监控 关系型数据库
InfluxDB 时序数据的高效解决方案
InfluxDB 是一种专为时间序列数据优化的开源数据库,支持高效存储、检索和分析大量时序数据。它采用 Tag-Key-Value 模型,提供高性能写入与查询能力,适合监控系统、物联网设备数据及实时分析等场景。相比传统关系型数据库(如 MySQL),InfluxDB 针对时序数据进行了架构优化,具备无模式设计、自动数据管理及灵活扩展性等优势。本文通过 Go 语言代码实战展示了如何连接、写入和查询 InfluxDB 数据,并介绍了其核心概念与应用场景,助力开发者快速上手时序数据库开发。
1673 0
InfluxDB 时序数据的高效解决方案
|
Go
在golang中发起http请求以获取访问域名的ip地址实例(使用net, httptrace库)
这只是追踪我们的行程的简单方法,不过希望你跟着探险家的脚步,即使是在互联网的隧道中,也可以找到你想去的地方。接下来就是你的探险之旅了,祝你好运!
652 26
Go字节数组与字符串相互转换
Go字节数组与字符串相互转换
367 3
|
程序员 Go
【Go语言精进之路】Go语言fmt包深度探索:格式化输入输出的利器
【Go语言精进之路】Go语言fmt包深度探索:格式化输入输出的利器
687 3