Python 做简单的系统监控
# Python 做简单的系统监控* 在linux下有许许多系统命令可以让我们时刻监控系统运行的状态,如ps,top,free等等,要获取这些系统信息,Python可以通过subprocess模块调用并获取结果。但这样做显得很麻烦,尤其是要写很多解析代码。而且对例如Windows系统支持并不友好。
* Python中获取系统信息的另一个好办法是使用psutil这个第三方模块。顾名思义,psutil = process and system utilities,它不仅可以通过一两行代码实现系统监控,还可以跨平台使用,支持Linux/UNIX/OSX/Windows等,是系统管理员和运维小伙伴不可或缺的必备模块。
## 需要用到的库
* psutil
* 安装:` pip install psutil`
## 基本使用
```
import psutil
## 获取CPU信息
print(psutil.cpu_count()) # CPU逻辑数量
print(psutil.cpu_count(logical=False)) #CPU物理核心
## 统计CPU的用户/系统/空闲时间:
print(psutil.cpu_times())
## 获取内存信息
print(psutil.virtual_memory()) ## 获取物理内存
## 获取磁盘信息
print(psutil.disk_partitions()) # 磁盘分区信息
print(psutil.disk_usage('D:\\') )# 磁盘使用情况
## 获取网络信息
print(psutil.net_io_counters()) ## 获取网络读写字节/包的个数
## 获取进程信息
p = psutil.Process(3776)# 获取指定进程ID=3776,其实就是当前Python交互环境
print(p.name()) # 进程名称
print(p.exe()) # 进程exe路径
print(p.cmdline()) # 进程启动的命令行
p.terminate() # 结束进程
```
## 拓展
* psutil还可以获取用户信息、Windows服务等很多有用的系统信息,具体请参考psutil的官网:https://github.com/giampaolo/psutil whoami233 发表于 2023-2-21 14:10
我看Github上写的是 Supported Python versions are 2.7, 3.4+ and PyPy.
OK,下个2.7去 snakeyuna 发表于 2023-2-21 14:08
python版本用的是哪个?2.7?3.8?还是3.11?
我看Github上写的是 Supported Python versions are 2.7, 3.4+ and PyPy. python版本用的是哪个?2.7?3.8?还是3.11? 一般采集都是用python2.7,然后下发到所有节点采集数据,入库 snakeyuna 发表于 2023-2-21 14:08
python版本用的是哪个?2.7?3.8?还是3.11?
3.x版本也适用 能够结束后台没有用的进程吗?怎么筛选结束? vectorwang 发表于 2023-2-21 15:18
能够结束后台没有用的进程吗?怎么筛选结束?
psutil.pids() # 列出所有进程ID
然后可以根据进程id获取进程名进行筛选 用心讨论,共获提升! 简易可行