[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)
  }
}
相关文章
|
Web App开发 编解码 安全
【WebRTC 入门教程】全面解析WebRTC:从底层原理到Qt和FFmpeg的集成应用
【WebRTC 入门教程】全面解析WebRTC:从底层原理到Qt和FFmpeg的集成应用
7310 2
|
存储 虚拟化 Windows
ESXI8.0安装Windows11
HKEY_LOCAL_MACHINE\SYSTEM\Setup 创建一个名为“LabConfig”的项,在“LabConfig”下创建两个32位DWORD值: 键为“BypassTPMCheck”,值为“00000001” 键为“BypassSecureBootCheck”,值为“00000001” 在安装 Windows 11 进入到以下阶段即“现在安装”按 Shift+F10 进入到命令提示符,添加注册表键值绕过 TPM 检查;如果你是从微软官方下载的 ISO 镜像则在提示需要输入密钥阶段进入到命令提示符;之后就可以正常安装了。 REG ADD HKLM\SYSTEM\Setu
10229 0
ESXI8.0安装Windows11
|
9月前
|
存储 监控 关系型数据库
InfluxDB 时序数据的高效解决方案
InfluxDB 是一种专为时间序列数据优化的开源数据库,支持高效存储、检索和分析大量时序数据。它采用 Tag-Key-Value 模型,提供高性能写入与查询能力,适合监控系统、物联网设备数据及实时分析等场景。相比传统关系型数据库(如 MySQL),InfluxDB 针对时序数据进行了架构优化,具备无模式设计、自动数据管理及灵活扩展性等优势。本文通过 Go 语言代码实战展示了如何连接、写入和查询 InfluxDB 数据,并介绍了其核心概念与应用场景,助力开发者快速上手时序数据库开发。
1361 0
InfluxDB 时序数据的高效解决方案
|
7月前
|
Unix Linux 编译器
解决在Windows平台上运行Golang程序时出现的syscall.SIGUSR1未定义错误。
通过这种结构,你的代码既可以在支持 SIGUSR1 信号的系统上正常工作,又可以在不支持这些信号的 Windows 系统上编译通过,确保跨平台的兼容性和功能的完整性。
274 0
国内开源镜像站点
阿里开源镜像站:https://opsx.alibaba.com/mirror 网易开源镜像站:http://mirrors.163.
40640 1
|
8月前
|
存储 监控 分布式数据库
ClickHouse分布式数据库动态伸缩(弹性扩缩容)的实现
实现ClickHouse数据库的动态伸缩需要持续的维护和精细的操作。从集群配置到数据迁移,再到监控和自动化,每一步都要仔细管理以确保服务的可靠性和性能。这些活动可以显著提高应用的响应性和成本效率,帮助业务根据实际需求灵活调整资源分配。
445 10
|
9月前
|
机器学习/深度学习 存储 算法
如何判断两张图片的相似度?原来图片对比也可以如此简单!
本文介绍了图片对比技术在多个场景中的应用,如图片去重、内容审核、版权维权及相似图片搜索,并详细解析了两种主流的图片对比方法。第一种是**MD5指纹对比**,适合精确匹配完全相同的图片,具有速度快、简单易用的特点,但对稍作修改的图片无能为力。第二种是**图像哈希对比**,包括平均哈希、感知哈希等算法,能够判断图片的相似程度,适用于处理缩放、旋转或亮度调整后的图片,但在语义相似性上仍有局限。最后提到,随着机器学习和深度神经网络的发展,图片相似度判断技术将有更多可能性,值得进一步探索。
3034 6
如何判断两张图片的相似度?原来图片对比也可以如此简单!
|
Go
Golang的time.NewTicker周期性定时器使用案例
这篇文章介绍了Golang中time包的NewTicker函数如何创建周期性定时器,并通过两个示例展示了如何使用定时器以及如何停止定时器。
346 1
|
监控 Linux Go
Go语言编写的示例代码,用于监控获取计算机的主板信息
Go语言并没有提供直接获取主板信息的标准库,因此这个示例主要涵盖了CPU温度和内存使用情况。
875 42
|
JSON 安全 Go
Go语言中使用JWT鉴权、Token刷新完整示例,拿去直接用!
本文介绍了如何在 Go 语言中使用 Gin 框架实现 JWT 用户认证和安全保护。JWT(JSON Web Token)是一种轻量、高效的认证与授权解决方案,特别适合微服务架构。文章详细讲解了 JWT 的基本概念、结构以及如何在 Gin 中生成、解析和刷新 JWT。通过示例代码,展示了如何在实际项目中应用 JWT,确保用户身份验证和数据安全。完整代码可在 GitHub 仓库中查看。
2458 1