248 lines
4.2 KiB
Markdown
248 lines
4.2 KiB
Markdown
# psutil 详细功能文档
|
||
|
||
`psutil`(Python System and Process Utilities)是一个跨平台的 Python 库,用于检索系统运行时的信息,如**CPU、内存、磁盘、网络、进程**等。它支持 Linux、Windows、macOS、FreeBSD 等主流操作系统,是系统监控、性能分析和运维自动化的重要工具。
|
||
|
||
---
|
||
|
||
## 一、安装与导入
|
||
|
||
### 1. 安装
|
||
```bash
|
||
pip install psutil
|
||
```
|
||
|
||
### 2. 导入
|
||
```python
|
||
import psutil
|
||
```
|
||
|
||
---
|
||
|
||
## 二、CPU 相关功能
|
||
|
||
### 1. CPU 逻辑/物理核心数
|
||
```python
|
||
psutil.cpu_count() # 逻辑 CPU 数量
|
||
psutil.cpu_count(logical=False) # 物理 CPU 数量
|
||
```
|
||
|
||
### 2. CPU 使用率
|
||
```python
|
||
psutil.cpu_percent(interval=1) # 整体 CPU 使用率(阻塞 1 秒)
|
||
psutil.cpu_percent(interval=None) # 非阻塞调用
|
||
|
||
psutil.cpu_times_percent(interval=1)
|
||
# 返回用户态、系统态、空闲等占比
|
||
```
|
||
|
||
### 3. 每个 CPU 核心的使用率
|
||
```python
|
||
psutil.cpu_percent(interval=1, percpu=True)
|
||
```
|
||
|
||
### 4. CPU 时间统计
|
||
```python
|
||
psutil.cpu_times()
|
||
# user / system / idle / iowait 等
|
||
```
|
||
|
||
---
|
||
|
||
## 三、内存相关功能
|
||
|
||
### 1. 虚拟内存(RAM)
|
||
```python
|
||
mem = psutil.virtual_memory()
|
||
print(mem.total, mem.available, mem.percent)
|
||
```
|
||
|
||
主要字段说明:
|
||
|
||
| 属性 | 含义 |
|
||
|----|----|
|
||
| total | 总内存 |
|
||
| available | 可用内存 |
|
||
| used | 已使用内存 |
|
||
| free | 完全空闲内存 |
|
||
| percent | 使用百分比 |
|
||
|
||
### 2. 交换内存(Swap)
|
||
```python
|
||
swap = psutil.swap_memory()
|
||
print(swap.total, swap.used, swap.free)
|
||
```
|
||
|
||
---
|
||
|
||
## 四、磁盘相关功能
|
||
|
||
### 1. 磁盘分区信息
|
||
```python
|
||
psutil.disk_partitions()
|
||
```
|
||
|
||
示例返回:
|
||
```text
|
||
sdiskpart(device='/dev/sda1', mountpoint='/', fstype='ext4')
|
||
```
|
||
|
||
### 2. 磁盘使用情况
|
||
```python
|
||
psutil.disk_usage('/')
|
||
```
|
||
|
||
返回字段:`total / used / free / percent`
|
||
|
||
### 3. 磁盘 I/O 统计
|
||
```python
|
||
psutil.disk_io_counters()
|
||
```
|
||
|
||
字段包括:
|
||
- `read_bytes`
|
||
- `write_bytes`
|
||
- `read_count`
|
||
- `write_count`
|
||
|
||
按磁盘:
|
||
```python
|
||
psutil.disk_io_counters(perdisk=True)
|
||
```
|
||
|
||
---
|
||
|
||
## 五、网络相关功能
|
||
|
||
### 1. 网络 I/O 统计
|
||
```python
|
||
psutil.net_io_counters()
|
||
```
|
||
|
||
字段:
|
||
- `bytes_sent`
|
||
- `bytes_recv`
|
||
- `packets_sent`
|
||
- `packets_recv`
|
||
|
||
按网卡:
|
||
```python
|
||
psutil.net_io_counters(pernic=True)
|
||
```
|
||
|
||
### 2. 网络连接
|
||
```python
|
||
psutil.net_connections(kind='inet')
|
||
```
|
||
|
||
常用 `kind`:
|
||
- `'inet'`:IPv4 + IPv6
|
||
- `'tcp'`
|
||
- `'udp'`
|
||
|
||
返回对象包含:
|
||
- `fd`, `family`, `type`, `laddr`, `raddr`, `status`, `pid`
|
||
|
||
### 3. 网络接口信息
|
||
```python
|
||
psutil.net_if_addrs()
|
||
psutil.net_if_stats()
|
||
```
|
||
|
||
---
|
||
|
||
## 六、进程管理(核心功能)
|
||
|
||
### 1. 获取进程 PID
|
||
```python
|
||
psutil.pids()
|
||
```
|
||
|
||
### 2. 创建 Process 对象
|
||
```python
|
||
p = psutil.Process(pid=1234)
|
||
```
|
||
|
||
### 3. 常用进程信息
|
||
```python
|
||
p.name() # 进程名
|
||
p.exe() # 可执行文件路径
|
||
p.cmdline() # 启动命令
|
||
p.pid # PID
|
||
p.ppid() # 父 PID
|
||
p.status() # 状态
|
||
p.create_time() # 创建时间
|
||
```
|
||
|
||
### 4. CPU / 内存使用
|
||
```python
|
||
p.cpu_percent(interval=0.1)
|
||
p.memory_info() # RSS / VMS
|
||
p.memory_percent()
|
||
```
|
||
|
||
### 5. 线程与文件
|
||
```python
|
||
p.threads()
|
||
p.open_files()
|
||
```
|
||
|
||
### 6. 网络连接
|
||
```python
|
||
p.net_connections()
|
||
```
|
||
|
||
### 7. 进程控制
|
||
```python
|
||
p.suspend()
|
||
p.resume()
|
||
p.kill()
|
||
p.terminate()
|
||
```
|
||
|
||
---
|
||
|
||
## 七、系统信息与传感器
|
||
|
||
### 1. 系统基本信息
|
||
```python
|
||
psutil.boot_time()
|
||
psutil.users()
|
||
```
|
||
|
||
### 2. 温度传感器(Linux)
|
||
```python
|
||
psutil.sensors_temperatures()
|
||
```
|
||
|
||
### 3. 电池信息(笔记本)
|
||
```python
|
||
psutil.sensors_battery()
|
||
```
|
||
|
||
---
|
||
|
||
## 八、跨平台注意事项
|
||
|
||
| 功能 | Windows | Linux | macOS |
|
||
|----|----|----|----|
|
||
| 进程 CPU affinity | ❌ | ✅ | ❌ |
|
||
| sensors_temperature | ❌ | ✅ | ⚠️ |
|
||
| 完整 net_connections | ⚠️ | ✅ | ✅ |
|
||
|
||
> ⚠️ 表示部分支持或需要管理员权限
|
||
|
||
---
|
||
|
||
## 九、常见应用场景
|
||
|
||
- 系统资源实时监控
|
||
- 服务器性能分析
|
||
- 进程级资源审计
|
||
- 自动化运维脚本
|
||
- 安全/异常进程检测
|
||
|
||
---
|
||
|
||
## 十、总结
|
||
|
||
`psutil` 提供了**统一、简洁、跨平台**的系统信息访问接口,是 Python 中做系统监控和运维自动化的首选库之一。无论是查看 CPU、内存、磁盘、网络,还是精细到单个进程的资源占用,`psutil` 都能高效胜任。 |