fengxiaoxiao7 发表于 2023-2-21 14:03

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

snakeyuna 发表于 2023-2-21 14:16

whoami233 发表于 2023-2-21 14:10
我看Github上写的是 Supported Python versions are 2.7, 3.4+ and PyPy.

OK,下个2.7去

whoami233 发表于 2023-2-21 14:10

snakeyuna 发表于 2023-2-21 14:08
python版本用的是哪个?2.7?3.8?还是3.11?

我看Github上写的是 Supported Python versions are 2.7, 3.4+ and PyPy.

snakeyuna 发表于 2023-2-21 14:08

python版本用的是哪个?2.7?3.8?还是3.11?

choujie1689 发表于 2023-2-21 14:59

一般采集都是用python2.7,然后下发到所有节点采集数据,入库

fengxiaoxiao7 发表于 2023-2-21 15:15

snakeyuna 发表于 2023-2-21 14:08
python版本用的是哪个?2.7?3.8?还是3.11?

3.x版本也适用

vectorwang 发表于 2023-2-21 15:18

能够结束后台没有用的进程吗?怎么筛选结束?

fengxiaoxiao7 发表于 2023-2-21 15:23

vectorwang 发表于 2023-2-21 15:18
能够结束后台没有用的进程吗?怎么筛选结束?
psutil.pids() # 列出所有进程ID

然后可以根据进程id获取进程名进行筛选

laustar 发表于 2023-2-21 15:45

        用心讨论,共获提升!

jik2qian 发表于 2023-2-21 16:02

简易可行
页: [1] 2 3
查看完整版本: Python 做简单的系统监控