python之psutil 采集linux系统信息
1、psutil简介
psutil是一个跨平台的 Python 库,提供了一种方便的方法来查询系统和进程的相关信息。
它可以用来获取 CPU、内存、磁盘、网络等系统级的数据,适合需要对系统性能进行监控和管理的开发工作。
五大主要功能:
CPU 信息:获取 CPU 使用率、核心数、频率等。
内存信息:获取系统内存使用情况,包括虚拟内存和物理内存。
磁盘信息:获取磁盘分区信息、使用情况。
网络信息:获取网络接口信息、网络连接状态等。
进程管理:获取系统上所有进程的信息,可以监控和管理进程。
2、官网
https://psutil.readthedocs.io/en/latest/
3、获取CPU信息
import psutil # 获取 CPU 使用率 cpu_usage = psutil.cpu_percent(interval=1) print(f"CPU 使用率: {cpu_usage}%") # 获取CPU核心数 cpu_count = psutil.cpu_count(logical=True) # 获取逻辑核心数 print(f"CPU逻辑核心数: {cpu_count}") `cpu_count()` 方法返回CPU的核心数量,`logical=True`表示返回逻辑核心数。
4、获取磁盘信息
import psutil # 获取磁盘使用情况 disk_usage = psutil.disk_usage('/') print(f"磁盘总大小: {disk_usage.total / (1024 ** 3):.2f} GB") print(f"已使用: {disk_usage.used / (1024 ** 3):.2f} GB") print(f"可用: {disk_usage.free / (1024 ** 3):.2f} GB") print(f"使用率: {disk_usage.percent}%") `disk_usage()` 方法用于获取磁盘的使用率,传入参数`'/'`表示根目录的磁盘使用情况。 # 获取分区信息 partitions = psutil.disk_partitions() for partition in partitions: print(f"设备: {partition.device}") print(f"挂载点: {partition.mountpoint}") print(f"文件系统类型: {partition.fstype}")
5、获取内存信息
import psutil # 获取虚拟内存信息 virtual_memory = psutil.virtual_memory() print(f"总内存: {virtual_memory.total / (1024 ** 2):.2f} MB") print(f"已使用内存: {virtual_memory.used / (1024 ** 2):.2f} MB") print(f"可用内存: {virtual_memory.available / (1024 ** 2):.2f} MB") print(f"内存使用率: {virtual_memory.percent}%")
6、获取网络信息
import psutil # 获取网络接口的信息 network_info = psutil.net_if_addrs() print("网络接口信息:") for interface, addr_list in network_info.items(): print(f"{interface}: {addr_list}") net_io = psutil.net_io_counters() print(f"发送字节数: {net_io.bytes_sent}") print(f"接收字节数: {net_io.bytes_recv}") connections = psutil.net_connections(kind='inet') for conn in connections: print(f"协议: {conn.type}, 本地地址: {conn.laddr}, 远程地址: {conn.raddr}")
7、获取进程信息
import psutil # 获取所有进程信息 for proc in psutil.process_iter(['pid', 'name', 'username']): print(proc.info) # 查找特定进程 try: p = psutil.Process(1234) # 假设进程ID为1234 print(f"进程名: {p.name()}") print(f"进程状态: {p.status()}") print(f"进程CPU时间: {p.cpu_times()}") print(f"进程内存信息: {p.memory_info()}") except psutil.NoSuchProcess: print("该进程不存在") # 退出进程 p.terminate() print(f"进程{p.pid} 已终止")