目录

1.获取 cpu 内存 磁盘使用率

2.获取本机信息

3. 获取CPU信息

4. 获取内存信息

5.获取磁盘信息

6.获取网络信息

7. 获取进程信息


使用库:

go get github.com/shirou/gopsutil

1.获取 cpu 内存 磁盘使用率

代码实例:

import github.com/shirou/gopsutilfunc GetCpuPercent() float64 {percent, _:= cpu.Percent(time.Second, false)return percent[0]
}func GetMemPercent()float64 {memInfo, _ := mem.VirtualMemory()return memInfo.UsedPercent
}func GetDiskPercent() float64 {parts, _ := disk.Partitions(true)diskInfo, _ := disk.Usage(parts[0].Mountpoint)return diskInfo.UsedPercent
}func main() {fmt.Println(GetCpuPercent())fmt.Println(GetMemPercent())fmt.Println(GetDiskPercent())
}

输出结果

7.8125
71
43.12042706933934

2.获取本机信息

info, _ := host.Info()
fmt.Println(info)

输出:

{"hostname":"WIN-SP09TQCP1U8","uptime":25308,"bootTime":1558574107,"procs":175,"os":"windows","platform":"Microsoft Windows 10 Pro","platformFamily":"Standalone Workstation","platformVersion":"10.0.17134 Build 17134","kernelVersion":"","virtualizationSystem":"","virtualizationRole":"","hostid":。。。}

3. 获取CPU信息

info, _ := cpu.Info() //总体信息
fmt.Println(info)
//output:
[{"cpu":0,cores":4,"modelName":"Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz","mhz":2501,。。。]
c, _ := cpu.Counts(true) //cpu逻辑数量
fmt.Println(c) //4
c, _ = cpu.Counts(false) //cpu物理核心
fmt.Println(c) //如果是2说明是双核超线程, 如果是4则是4核非超线程

用户CPU时间/系统CPU时间/空闲时间。。。等等

info, _ := cpu.Times(false)
fmt.Println(info)
//output:
[{"cpu":"cpu-total","user":1272.0,"system":1572.7,"idle":23092.3,"nice":0.0,"iowait":0.0,"irq":0.0,。。。}]
用户CPU时间:就是用户的进程获得了CPU资源以后,在用户态执行的时间。
系统CPU时间:用户进程获得了CPU资源以后,在内核态的执行时间。

CPU使用率,每秒刷新一次

for{info, _ := cpu.Percent(time.Duration(time.Second), false)fmt.Println(info)
}

4. 获取内存信息

获取物理内存和交换区内存信息

info, _ := mem.VirtualMemory()
fmt.Println(info)
info2, _ := mem.SwapMemory()
fmt.Println(info2)
//output:
{"total":8129818624,"available":4193423360,"used":3936395264,"usedPercent":48,"free":0,"active":0,"inactive":0,...}
{"total":8666689536,"used":4716843008,"free":3949846528,"usedPercent":0.5442496801583825,"sin":0,"sout":0,...}

总内存大小是8129818624 = 8 GB,已用3936395264 = 3.9 GB,使用了48%。而交换区大小是8666689536 = 8 GB。

5.获取磁盘信息

可以通过psutil获取磁盘分区、磁盘使用率和磁盘IO信息:

info, _ := disk.Partitions(true) //所有分区
fmt.Println(info)
info2, _ := disk.Usage("E:") //指定某路径的硬盘使用情况
fmt.Println(info2)
info3, _ := disk.IOCounters() //所有硬盘的io信息
fmt.Println(info3)
//output:
[{"device":"C:","mountpoint":"C:","fstype":"NTFS","opts":"rw.compress"} {"device":"D:","mountpoint":"D:","fstype":"NTFS","opts":"rw.compress"} {"device":"E:","mountpoint":"E:","fstype":"NTFS","opts":"rw.compress"} ]
{"path":"E:","fstype":"","total":107380965376,"free":46790828032,"used":60590137344,"usedPercent":56.425398236866755,"inodesTotal":0,"inodesUsed":0,"inodesFree":0,"inodesUsedPercent":0}
map[C::{"readCount":0,"mergedReadCount":0,"writeCount":0,"mergedWriteCount":0,"readBytes":0,"writeBytes":4096,"readTime":0,"writeTime":0,"iopsInProgress":0,"ioTime":0,"weightedIO":0,"name":"C:","serialNumber":"","label":""} 。。。]

6.获取网络信息

获取当前网络连接信息

info, _ := net.Connections("all") //可填入tcp、udp、tcp4、udp4等等
fmt.Println(info)
//output:
[{"fd":0,"family":2,"type":1,"localaddr":{"ip":"0.0.0.0","port":135},"remoteaddr":{"ip":"0.0.0.0","port":0},"status":"LISTEN","uids":null,"pid":668} {"fd":0,"family":2,"type":1,"localaddr":{"ip":"0.0.0.0","port":445},"remoteaddr":{"ip":"0.0.0.0","port":0},"status":"LISTEN","uids":null,"pid":4} {"fd":0,"family":2,"type":1,"localaddr":{"ip":"0.0.0.0","port":1801},"remoteaddr":{"ip":"0.0.0.0","port":0},"status":"LISTEN","uids":null,"pid":3860}
等等。。。]

获取网络读写字节/包的个数

info, _ := net.IOCounters(false)
fmt.Println(info)
//output:[{"name":"all","bytesSent":6516450,"bytesRecv":36991210,"packetsSent":21767,"packetsRecv":33990,"errin":0,"errout":0,"dropin":0,"dropout":0,"fifoin":0,"fifoout":0}]

7. 获取进程信息

获取到所有进程的详细信息:

info, _ := process.Pids() //获取当前所有进程的pid
fmt.Println(info)
//output:
[0 4 96 464 636 740 748 816 852 880 976 348 564 668 912 1048 1120 1184 1268 1288。。。]
info2,_ := process.GetWin32Proc(1120) //对应pid的进程信息
fmt.Println(info2)
//output:
[{svchost.exe 0xc00003e570 0xc00003e580 8 2019-05-23 09:15:28.444192 +0800 CST 5600 4 0xc00003e5b0 0 0 0 0 Win32_ComputerSystem WIN-SE89TTCP7U3 0xc00003e620 Win32_Process 0xc00003e650 0xc00005331e 209 6250000 0xc000053378 0xc0000533b8 Win32_OperatingSystem Microsoft Windows 10 专业版。。。}]
fmt.Println(info2[0].ParentProcessID) //获取父进程的pid

golang 获取cpu 内存 硬盘 使用率 信息 进程信息相关推荐

  1. 一个用了统计CPU 内存 硬盘 使用率的shell脚本

    一个用了统计CPU 内存 硬盘 使用率的shell脚本 一个统计 CPU 内存 硬盘 使用率的shell脚本,供大家学习参考 代码如下: #!/bin/bash #This script is use ...

  2. centOS7下实践查询版本/CPU/内存/硬盘容量等硬件信息

    https://www.cnblogs.com/zy-plan/p/8617202.html 1.系统 1.1版本 uname -a 能确认是64位还是32位,其它的信息不多 [root@localh ...

  3. 树莓派-4-温度CPU内存硬盘状态信息

    获取树莓派当前状态和数据(温度.CPU.内存.硬盘) 1 CPU和操作系统信息 1.1 CPU信息 $ sudo cat /proc/cpuinfo $ sudo cat /proc/cpuinfo ...

  4. C# 使用 PerformanceCounter 获取 CPU 和 硬盘的使用率

    C# 使用 PerformanceCounter 获取 CPU 和 硬盘的使用率: 先看界面: 建一个 Windows Form  桌面程序,代码如下: using System; using Sys ...

  5. Linux 查看CPU 内存 IO使用率,linux 查看CPU内存 网络 流量 磁盘 IO

    使用vmstat命令来察看系统资源情况 在命令行方式下,如何查看CPU.内存的使用情况,网络流量和磁盘I/O? Q: 在命令行方式下,如何查看CPU.内存的使用情况,网络流量和磁盘I/O? A: 在命 ...

  6. 【MacOS】Hammerspoon-sugood多合一效率工具,新增状态栏显示系统信息(CPU/内存/硬盘/网速)-v0.1.7

    运行环境要求 已测试可用的系统:MacOS 10.14 及以上 脚本功能说明 Github(国外地址) Gitee(国内地址) 已完成如下功能 状态栏显示输入法状态 时间同步功能 屏幕取色功能 JSO ...

  7. Windows 性能监视器的基本指标说明(CPU,内存,硬盘参数)

    作为一个系统工程师来说,要看懂监控的数据至关重要,关系着优化和分析出现的问题.我是在运维过程中要用到的.因此,今天给出Windows 性能监视器的一些基本指标(CPU,内存,硬盘参数),希望对大家将来 ...

  8. 处理器仿存带宽_linux服务器CPU内存硬盘读写带宽等性能测试方法

    如何对一个VPS主机进行CPU内存,硬盘IO读写,带宽速度等项目测试,像UnixBench和压力测试则可以综合反映一个VPS的性能水平,方便大家对照参考. VPS性能测试:CPU内存,硬盘IO读写,带 ...

  9. Linux Shell脚本专栏_找出占用CPU/内存过高的进程_05

    文章目录 找出占用CPU/内存过高的进程 1. 脚本 2. 运行脚本 3. 效果图 找出占用CPU/内存过高的进程 1. CPU 过高的进程2. 内存 过高的进程 1. 脚本 #/bin/bash e ...

最新文章

  1. 《windows核心编程系列》二谈谈ANSI和Unicode字符集
  2. pb retrieve时停止工作_电机没有抱闸如何利用变频器实现减速停止
  3. JAVA_OA(八):springMVC对JDBC的操作小项目a
  4. atitit.jQuery Validate验证框架详解与ati Validate 设计新特性
  5. poco c++ 开发指南_掌握这个框架,你将会开发通杀全平台的万能爬虫
  6. 巧用windows xp远程桌面web连接
  7. windowns2019辅域添加
  8. java tcp链接慢_jmeter tcp长连接性能测试
  9. linux说明是集群,集群——菜鸟学习Linux集群之概念篇
  10. EditPlus 3注册 激活码
  11. 2021Java面经:史上最全的《Java面试题及解析》
  12. 华三防火墙远程telnet登录设置
  13. 手把手调参最新 YOLOv7 模型 训练部分 - 最新版本(二)
  14. 隐马尔科夫模型(HMM)等文章记录
  15. 华为各类工程师通信基础面试题目及答案
  16. 为什么模电这么难学?一文带你透彻理解模电
  17. 手把手教你用Unet实现语义分割(Pytorch版)
  18. Attention机制的精要总结,附:中英文机器翻译的实现!
  19. Android入门教程学习笔记
  20. PowerBI利用市场可视化组件Hierarchy Chart by Akvelon绘制组织架构图

热门文章

  1. NT Kernel System 占用80端口
  2. 2008服务器注销设置,windows-server-2008 – 终端服务器在5分钟后注销用户
  3. java判断char是否相等
  4. Java 轻量级框架Spring曝出0day漏洞
  5. 【重新定义matlab强大系列十一】函数rescale数组元素的缩放范围
  6. webpack常用的插件集合
  7. Linux的软链接与硬链接
  8. Excel 文本日期转可计算的日期,再进行计算
  9. ubuntu重新获取IP地址
  10. win7计算机睡眠后无法唤醒,Win7进入睡眠模式后唤醒不了该怎么办?