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


目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
135 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
1月前
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
7天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
51 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
1月前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
80 43
|
1月前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
71 30
|
1月前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
37 12
|
1月前
|
机器学习/深度学习 算法 前端开发
基于Python深度学习果蔬识别系统实现
本项目基于Python和TensorFlow,使用ResNet卷积神经网络模型,对12种常见果蔬(如土豆、苹果等)的图像数据集进行训练,构建了一个高精度的果蔬识别系统。系统通过Django框架搭建Web端可视化界面,用户可上传图片并自动识别果蔬种类。该项目旨在提高农业生产效率,广泛应用于食品安全、智能农业等领域。CNN凭借其强大的特征提取能力,在图像分类任务中表现出色,为实现高效的自动化果蔬识别提供了技术支持。
基于Python深度学习果蔬识别系统实现
|
1月前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
32 3
|
6天前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
131 15
|
27天前
|
弹性计算 Ubuntu Java
OS-Copilot-ubuntu镜像版本的具体测试使用(安装方式有单独注明)
作为一名个人开发者,我主要负责云资源的运维和管理。在使用OS Copilot的过程中,我遇到了一些配置问题,特别是在ECS实例中设置AccessKey时,但最终成功解决了。通过使用OS Copilot的-t/-f/管道功能,我大大提升了效率,减少了命令编写的工作量,特别是在搭建Java运行环境时效果显著。此外,| 功能帮助我快速理解文档,整体体验非常流畅,推荐给其他开发者使用。
39 6

热门文章

最新文章