在上述的代码中,进程磁盘占用只使用c盘吗,还是也会使用d盘
时间: 2024-04-15 09:27:42 浏览: 164
蓝屏代码分析
在上述代码中,进程的磁盘占用仅使用了'C:'盘的信息。这是因为在 `disk_io = psutil.disk_io_counters(perdisk=True).get('C:')` 这行代码中,我们通过 `get('C:')` 方法来获取指定磁盘('C:')的IO统计数据。
如果你希望同时监控多个磁盘(如'C:'盘和'D:'盘),可以进行如下修改:
```python
import psutil
import time
# 设置阈值(示例阈值为50%)
cpu_threshold = 50
ram_threshold = 50
disk_threshold = 50
net_threshold = 50
while True:
for proc in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_percent']):
pid = proc.info['pid']
name = proc.info['name']
cpu_percent = proc.info['cpu_percent']
ram_percent = proc.info['memory_percent']
# 获取磁盘IO信息
disk_io_c = psutil.disk_io_counters(perdisk=True).get('C:')
disk_io_d = psutil.disk_io_counters(perdisk=True).get('D:')
disk_percent_c = disk_io_c.percent if disk_io_c else 0
disk_percent_d = disk_io_d.percent if disk_io_d else 0
# 获取网络IO信息
net_io = psutil.net_io_counters()
net_percent = net_io.percent if net_io else 0
# 判断是否超过阈值
if cpu_percent > cpu_threshold or ram_percent > ram_threshold or disk_percent_c > disk_threshold or disk_percent_d > disk_threshold or net_percent > net_threshold:
current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(f"异常报警:进程ID {pid}, 进程名称 {name}")
print(f"异常发生时间:{current_time}")
print(f"CPU 占用率:{cpu_percent}%")
print(f"内存 占用率:{ram_percent}%")
print(f"C 盘磁盘 占用率:{disk_percent_c}%")
print(f"D 盘磁盘 占用率:{disk_percent_d}%")
print(f"网络 IO 占用率:{net_percent}%")
print("---------------------------------")
# 每隔一段时间进行检测(示例为5秒)
time.sleep(5)
```
在上述代码中,我们使用 `psutil.disk_io_counters(perdisk=True).get('D:')` 获取了'D:'盘的IO统计数据,并将其占用率存储在 `disk_percent_d` 变量中。
这样,代码就会同时监控'C:'盘和'D:'盘的磁盘占用情况,并在超过阈值时进行报警。你可以根据需要添加更多的磁盘盘符,或者根据实际磁盘名称进行修改。
阅读全文