Python系统监控与运维指南:使用psutil模块
简介
psutil (process and system utilities) 是一个跨平台的轻量级高性能Python库,专门用于获取硬件、系统内核、进程的全方位信息,替代了传统需调用多个系统底层工具(如Linux的top/free、Windows的任务管理器、macOS的Activity Monitor)的复杂脚本。
它覆盖了CPU、内存、磁盘、网络、电池、进程、用户会话等10+类场景,且对Linux/Windows/macOS/FreeBSD/OpenBSD等主流系统的兼容性几乎做到了95%以上,是系统运维工程师、Python后端开发者(尤其是需要监控自身服务的)的必备工具。
安装
使用pip一行命令即可安装稳定版:
如果是Linux/macOS遇到权限受限(比如安装到全局site-packages),可以加上sudo:
核心功能速览
下面按运维/开发的高频需求,分模块展示核心代码:
1. CPU监控
静态/准静态信息
实时使用率
类似top的实时采样,可设置间隔和是否分核心:
2. 内存监控
支持物理内存和交换区(Swap)的详细统计,所有数值默认以字节为单位:
3. 磁盘监控
分区与挂载点
磁盘IO
4. 网络监控
全局IO与接口状态
5. 进程管理
实用技巧与注意事项
实用技巧
- 批量处理进程:优先用
psutil.process_iter(),它的性能比遍历pids()再创建Process实例高30%以上 - 跨平台兼容:用
hasattr(psutil, "xxx")先判断功能是否存在(比如笔记本的sensors_battery、Linux特有的sensors_temperatures) - 时间戳转人类可读格式:配合
datetime.fromtimestamp()使用
注意事项
- 权限问题:某些功能(如查看其他用户的进程、获取所有网络连接)需要root/管理员权限
- 性能开销:
interval参数设置过小(<0.1秒)会增加CPU占用,长期监控建议用1-5秒的间隔 - 异常处理:必须覆盖
NoSuchProcess(进程已退出)、AccessDenied(权限不足)、ZombieProcess(Linux僵尸进程)三类异常
总结
psutil通过简洁统一的API,解决了跨平台系统监控的痛点,是Python生态中系统工具类的“天花板”之一。无论是做临时的系统排查脚本,还是集成到后端服务的监控模块,它都能快速满足需求。
更多高级功能(如进程终止、网络连接详情、硬件传感器数据),可以参考psutil官方文档。

