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库,我们可以获取有关进程和系统内存使用的详细信息。这些方法可以方便地集成到更复杂的系统监控或性能分析工具中。


目录
相关文章
|
5天前
|
Ubuntu 测试技术 网络安全
Ubuntu系统下部署flatpress轻量级博客系统
【10月更文挑战第3天】Ubuntu系统下部署flatpress轻量级博客系统
23 2
Ubuntu系统下部署flatpress轻量级博客系统
|
1天前
麒麟系统mate-indicators进程占用内存过高问题解决
【10月更文挑战第7天】麒麟系统mate-indicators进程占用内存过高问题解决
9 2
|
2天前
|
Python
Jetson环境安装(二):ubuntu18.0卸载和安装python3
在Jetson Nano上如何卸载Python 3.7并重新安装Python 3.7.0版本的详细步骤,包括卸载命令、安装依赖库、下载和编译Python源码以及建立软链接等。
12 2
|
6天前
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
|
3天前
麒麟系统mate-indicators进程占用内存过高问题解决
【10月更文挑战第5天】麒麟系统mate-indicators进程占用内存过高问题解决
15 0
|
6天前
|
Ubuntu jenkins 持续交付
Ubuntu系统 用docker安装jenkins
Ubuntu系统 用docker安装jenkins
|
1月前
|
存储 Prometheus 监控
在Ubuntu系统上安装与配置Prometheus的步骤
通过以上步骤,您应该已经成功在Ubuntu系统上安装并配置了Prometheus。您现在可以开始使用Prometheus收集和分析您的系统和应用程序的指标数据了。
60 1
|
19天前
|
监控 Ubuntu Python
代码实现Ubuntu系统参数监控的方法
通过这种方式,你可以方便地对Ubuntu系统的关键参数进行实时监控,对系统性能分析和资源管理具有重要意义。
28 0