Python实现ubuntu系统进程内存监控

简介: Python实现ubuntu系统进程内存监控

监控Linux系统中的进程内存使用情况对于系统性能调优和故障排查非常关键。Python因其强大的库支持与简洁的语法成为完成这一任务的理想工具。在Ubuntu系统中,我们可以利用Python结合系统命令或者使用第三方库来获取进程的内存使用信息。

本文将介绍几种用Python监控Ubuntu系统进程内存使用的方法。

使用ps命令

在Linux系统中,ps命令是查看当前进程状态的常用工具。我们可以在Python脚本中调用这个命令来监控进程内存。

示例1:使用subprocess模块调用ps

import subprocess

def get_process_memory(process_name):
    # 使用ps命令获取进程的内存使用情况
    command = f"ps -aux | grep {process_name}"
    process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = process.communicate()
    
    # 分析输出结果
    if process.returncode == 0:
        lines = stdout.decode().split('\n')
        for line in lines:
            if process_name in line and not 'grep' in line:
                # 提取内存使用信息
                parts = line.split()
                mem_usage = parts[3] # %MEM列
                return mem_usage
    else:
        print(f"Error: {stderr.decode().strip()}")
        return None

# 使用示例
process_name = "python3"
mem_usage = get_process_memory(process_name)
print(f"{process_name} memory usage: {mem_usage}%")

使用psutil

psutil是一个跨平台库,用于在Python中获取进程和系统利用率(包括内存)的信息。它提供了一个丰富的API来获取各种系统信息。

示例2:使用psutil检索特定进程的内存使用信息

import psutil

def get_process_memory_psutil(process_name):
    # 遍历所有进程
    for proc in psutil.process_iter(['pid', 'name', 'memory_info']):
        if proc.info['name'] == process_name:
            # 输出进程内存使用信息
            memory_info = proc.info['memory_info']
            return {
                'rss': memory_info.rss,  # 实际使用物理内存
                'vms': memory_info.vms,  # 分配的虚拟内存
            }
    return None

# 使用示例
process_name = "python3"
memory_info = get_process_memory_psutil(process_name)
if memory_info:
    print(f"{process_name} memory usage: RSS={memory_info['rss']} bytes, VMS={memory_info['vms']} bytes")
else:
    print(f"No process named {process_name} found.")

监控系统内存使用

另外,监控整个系统的内存使用情况也是有益的。下面的代码示例使用psutil来监控整个系统的内存使用。

示例3:使用psutil监控系统内存使用

import psutil

def get_system_memory_info():
    # 获取系统内存使用详情
    mem = psutil.virtual_memory()
    return {
        'total': mem.total,          # 总内存
        'available': mem.available,  # 可用内存
        'used': mem.used,            # 已用内存
        'percent': mem.percent       # 内存使用百分比
    }

# 使用示例
memory_info = get_system_memory_info()
print(f"System memory info: {memory_info}")


总结


在本文中,我们介绍了使用Python来监控Ubuntu系统中进程的内存使用情况的几种方法。通过直接调用系统命令ps和使用psutil库,我们可以获取有关进程和系统内存使用的详细信息。这些方法可以方便地集成到更复杂的系统监控或性能分析工具中。


目录
相关文章
|
7月前
|
存储 监控 算法
电脑监控管理中的 C# 哈希表进程资源索引算法
哈希表凭借O(1)查询效率、动态增删性能及低内存开销,适配电脑监控系统对进程资源数据的实时索引需求。通过定制哈希函数与链地址法冲突解决,实现高效进程状态追踪与异常预警。
325 10
|
7月前
|
存储 监控 算法
监控电脑屏幕的帧数据检索 Python 语言算法
针对监控电脑屏幕场景,本文提出基于哈希表的帧数据高效检索方案。利用时间戳作键,实现O(1)级查询与去重,结合链式地址法支持多条件检索,并通过Python实现插入、查询、删除操作。测试表明,相较传统列表,检索速度提升80%以上,存储减少15%,具备高实时性与可扩展性,适用于大规模屏幕监控系统。
224 5
|
10月前
|
存储 运维 监控
基于跳表数据结构的局域网上网记录监控时序查询优化算法研究与 Python 实现
本文探讨跳表(Skip List)在局域网上网记录监控中的应用,分析其在快速范围查询、去重与异常检测中的优势,并提供 Python 实现示例,为高效处理海量时序数据提供参考。
216 0
|
监控 算法 安全
深度洞察内网监控电脑:基于Python的流量分析算法
在当今数字化环境中,内网监控电脑作为“守城卫士”,通过流量分析算法确保内网安全、稳定运行。基于Python的流量分析算法,利用`scapy`等工具捕获和解析数据包,提取关键信息,区分正常与异常流量。结合机器学习和可视化技术,进一步提升内网监控的精准性和效率,助力企业防范潜在威胁,保障业务顺畅。本文深入探讨了Python在内网监控中的应用,展示了其实战代码及未来发展方向。
|
8月前
|
存储 大数据 Unix
Python生成器 vs 迭代器:从内存到代码的深度解析
在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
421 2
|
消息中间件 存储 网络协议
从零开始掌握进程间通信:管道、信号、消息队列、共享内存大揭秘
本文详细介绍了进程间通信(IPC)的六种主要方式:管道、信号、消息队列、共享内存、信号量和套接字。每种方式都有其特点和适用场景,如管道适用于父子进程间的通信,消息队列能传递结构化数据,共享内存提供高速数据交换,信号量用于同步控制,套接字支持跨网络通信。通过对比和分析,帮助读者理解并选择合适的IPC机制,以提高系统性能和可靠性。
2171 14
|
9月前
|
传感器 数据采集 监控
Python生成器与迭代器:从内存优化到协程调度的深度实践
简介:本文深入解析Python迭代器与生成器的原理及应用,涵盖内存优化技巧、底层协议实现、生成器通信机制及异步编程场景。通过实例讲解如何高效处理大文件、构建数据流水线,并对比不同迭代方式的性能特点,助你编写低内存、高效率的Python代码。
365 0
|
10月前
|
监控 编译器 Python
如何利用Python杀进程并保持驻留后台检测
本教程介绍如何使用Python编写进程监控与杀进程脚本,结合psutil库实现后台驻留、定时检测并强制终止指定进程。内容涵盖基础杀进程、多进程处理、自动退出机制、管理员权限启动及图形界面设计,并提供将脚本打包为exe的方法,适用于需持续清理顽固进程的场景。
|
数据可视化 Linux iOS开发
Python测量CPU和内存使用率
这些示例帮助您了解如何在Python中测量CPU和内存使用率。根据需要,可以进一步完善这些示例,例如可视化结果或限制程序在特定范围内的资源占用。
461 22