文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python实现读取Linux系统的CPU以及内存占用

2023-05-20 11:16

关注

直接贴代码

import subprocess
 
def get_system_stats():
    #de().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以及内存占用

知识补充

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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯