Python实现读取Linux系统的CPU以及内存占用
作者:༜黎明之光༜
直接贴代码
import subprocess def get_system_stats(): # 通过 shell 命令获取 CPU 使用率和内存使用率 cpu_command = "top -bn1 | grep '%Cpu(s)' | awk '{print $2}'" memory_command = "free | grep Mem | awk '{print $3/$2 * 100.0}'" # 执行命令并获取输出结果 cpu_result = subprocess.check_output(cpu_command, shell=True).decode().strip() memory_result = subprocess.check_output(memory_command, shell=True).decode().strip() # 转换结果为浮点数 cpu_usage = float(cpu_result) memory_usage = float(memory_result) # 返回 CPU 使用率和内存使用率 return cpu_usage, memory_usage # 调用函数并获取结果 cpu_usage, memory_usage = get_system_stats() print("CPU 使用率: ", cpu_usage) print("内存使用率: ", memory_usage)
在上述示例中,get_system_stats 函数使用 subprocess 模块执行 shell 命令来获取系统的 CPU 使用率和内存使用率。通过 top 命令和 grep、awk 进行过滤和提取相关信息,并将结果转换为浮点数后返回。
代码解释:
cpu_command = "top -bn1 | grep '%Cpu(s)' | awk '{print $2}'"
让我们逐步解释这个命令的每个部分:
1.top -bn1: 这是 top 命令的参数,用于显示系统资源的实时使用情况。-b 表示以批处理模式运行,n1 表示只运行一次。
2.grep '%Cpu(s)': 这是 grep 命令的参数,用于在命令的输出中筛选包含 %Cpu(s) 的行。%Cpu(s) 是 top 命令输出中 CPU 使用率相关信息的标识。
3.awk '{print $2}': 这是 awk 命令的参数,用于提取每行的第二个字段并进行打印。在这里,awk 命令将提取第二个字段,即 CPU 使用率的数值。
综合起来,这个命令的作用是运行 top 命令获取系统资源信息,并通过管道传递给 grep 命令进行筛选,然后再传递给 awk 命令提取 CPU 使用率的数值。最终,cpu_command 变量会保存这个完整的 shell 命令字符串。
在 Python 代码中,subprocess.check_output(cpu_command, shell=True) 的作用是执行这个 shell 命令,并将输出结果以字符串的形式返回。
memory_command = "free | grep Mem | awk '{print $3/$2 * 100.0}'"
让我们逐步解释这个命令的每个部分:
1.free: 这是 free 命令,用于显示系统内存使用情况。
2.grep Mem: 这是 grep 命令的参数,用于筛选包含 "Mem" 的行,以过滤出与内存相关的信息。
3.awk '{print $3/$2 * 100.0}': 这是 awk 命令的参数,用于计算内存使用率。它提取每行的第三个字段(已使用内存)和第二个字段(总内存),然后将其相除并乘以 100,得到内存使用率。
综合起来,这个命令的作用是运行 free 命令获取系统内存信息,并通过管道传递给 grep 命令进行筛选,然后再传递给 awk 命令计算内存使用率。最终,memory_command 变量会保存这个完整的 shell 命令字符串。
在 Python 代码中,subprocess.check_output(memory_command, shell=True) 的作用是执行这个 shell 命令,并将输出结果以字符串的形式返回。
请注意,上述代码是一个示例,你可以根据你的需求和具体的 Linux 系统进行适当的调整和改进。另外,需要确保你的 Python 环境中已经安装了相关的依赖和工具,以使 subprocess 模块能够正常工作。
结果如下:
知识补充
Python不仅可以读取linux系统的cpu以及内存占用,也可以读取docker资源占用,下面是实现代码,需要的可以参考一下
函数内部使用该名称获取相应的容器对象,并计算 CPU 使用率和内存使用率。最后,函数返回这两个结果供调用者使用。
def get_container_stats(container_name): client = DockerClient() # 假设你已经初始化了 Docker 客户端 container = client.containers.get(container_name) stats = container.stats(stream=False) cpu_usage = 100 * stats['cpu_stats']['cpu_usage']['total_usage'] / stats['cpu_stats']['system_cpu_usage'] memory_used = 100 * stats['memory_stats']['usage'] / stats['memory_stats']['limit'] return cpu_usage, memory_used # 调用函数并获取结果 container_name = 'ueransim-slice1' cpu_usage, memory_used = get_container_stats(container_name) print("CPU 使用率: ", cpu_usage) print("内存使用率: ", memory_used)
到此这篇关于Python实现读取Linux系统的CPU以及内存占用的文章就介绍到这了,更多相关Python读取Linux系统CPU内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!