Repolode
shirou

shirou/gopsutil

Go 语言版的 psutil,用于跨平台读取 CPU、内存、磁盘、网络和进程等系统信息。

Star
11,938
Fork
1,691
未关闭 Issue
219
最近提交
前天

这是什么?

gopsutil 是一个 Go 语言库,参照 Python 的 psutil 设计,通过统一的 API 获取系统指标和进程信息。它可以读取 CPU 时间与使用率、虚拟内存和交换内存、磁盘分区与用量、网络 I/O 计数、网络连接、主机与开机时间、登录用户,以及进程的内存、CPU、打开文件等详细信息。

该库支持 Linux、FreeBSD、OpenBSD、macOS(Darwin)、Windows 和 Solaris,覆盖多种 CPU 架构,DragonFly BSD 和 Linux RISC-V 为部分支持。实现上不依赖 cgo,而是将相关 C 结构体移植为 Go 结构体,因此可以使用标准工具链直接编译和交叉编译。各平台特有的信息可通过 ExLinux、ExWindows 等 Ex 结构体获取。

项目采用日历版本号(vMAJOR.YY.MM),要求 Go 1.18 及以上版本。另外提供了若干 Linux 专用函数,用于读取 Docker 容器的 CPU 与内存 cgroup 数据以及 netfilter conntrack 计数。/proc、/sys 等系统目录可以通过环境变量或 context 指定其他位置。

核心功能

  • 01通过统一的 Go API 获取跨平台的 CPU、内存、磁盘和网络指标
  • 02提供进程级信息,如内存、CPU、打开的文件和网络连接
  • 03不依赖 cgo,C 结构体已移植为 Go 结构体
  • 04通过 ExLinux、ExWindows 等结构体获取平台特有信息
  • 05支持自定义 /proc、/sys 等系统路径,便于容器或挂载点场景使用

适用场景

  • 用 Go 开发监控代理或指标导出器,上报主机指标
  • 编写可在 Linux、macOS 和 Windows 上运行的系统状态命令行工具
  • 采集进程级资源占用,用于故障排查或仪表盘展示
  • 在 Linux 主机上读取 Docker 容器的 cgroup 资源数据

快速上手

  1. 1

    将库安装到你的 Go 模块中

    go get github.com/shirou/gopsutil/v4
  2. 2

    在代码中导入 mem 等包并读取系统内存信息

使用前须知

  • 需要 Go 1.18 或更高版本。
  • 不同平台的支持程度不一,部分功能在某些操作系统上仅部分可用或存在问题。

标签

常见问题

gopsutil 是什么?
Go 语言版的 psutil,用于跨平台读取 CPU、内存、磁盘、网络和进程等系统信息。 gopsutil 是一个 Go 语言库,参照 Python 的 psutil 设计,通过统一的 API 获取系统指标和进程信息。它可以读取 CPU 时间与使用率、虚拟内存和交换内存、磁盘分区与用量、网络 I/O 计数、网络连接、主机与开机时间、登录用户,以及进程的内存、CPU、打开文件等详细信息。
gopsutil 可以免费使用吗?用的什么许可证?
gopsutil 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
gopsutil 还在维护吗?
活跃维护中。gopsutil 最近一次提交是在 2026年11月5日。
gopsutil 适合用来做什么?
用 Go 开发监控代理或指标导出器,上报主机指标 编写可在 Linux、macOS 和 Windows 上运行的系统状态命令行工具 采集进程级资源占用,用于故障排查或仪表盘展示 在 Linux 主机上读取 Docker 容器的 cgroup 资源数据
gopsutil 怎么安装和运行?
将库安装到你的 Go 模块中: go get github.com/shirou/gopsutil/v4 在代码中导入 mem 等包并读取系统内存信息
在哪里获取 gopsutil?
源代码和安装说明在 GitHub 上:https://github.com/shirou/gopsutil

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目