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


目录
相关文章
|
2天前
|
监控 数据可视化 数据库
【python项目推荐】键盘监控--统计打字频率
【python项目推荐】键盘监控--统计打字频率
30 13
|
2天前
|
Python
Python中的并发编程(6)使用进程
Python中的并发编程(6)使用进程
|
3天前
|
机器学习/深度学习 存储 算法
基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、运动物体追踪
基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、运动物体追踪
|
3天前
|
机器学习/深度学习 存储 计算机视觉
基于YOLOv8深度学习的PCB板缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
基于YOLOv8深度学习的PCB板缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
|
3天前
|
机器学习/深度学习 存储 安全
基于YOLOv8深度学习的行人跌倒检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
基于YOLOv8深度学习的行人跌倒检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
|
3天前
|
机器学习/深度学习 传感器 算法
基于Mediapipe深度学习算法的手势识别系统【含python源码+PyqtUI界面+原理详解】-python手势识别 深度学习实战项目
基于Mediapipe深度学习算法的手势识别系统【含python源码+PyqtUI界面+原理详解】-python手势识别 深度学习实战项目
|
9天前
|
消息中间件 存储 缓存
【嵌入式软件工程师面经】Linux系统编程(线程进程)
【嵌入式软件工程师面经】Linux系统编程(线程进程)
20 1
|
2天前
|
Linux Shell C语言
Linux进程控制——Linux进程程序替换
Linux进程控制——Linux进程程序替换
|
2天前
|
Linux 调度
Linux进程控制——Linux进程等待
Linux进程控制——Linux进程等待
|
2天前
|
存储 缓存 Linux
Linux进程控制——Linux进程终止
Linux进程控制——Linux进程终止