Ubuntu环境下统计进程资源利用率

在Ubuntu环境下,使用Python统计不同进程的资源利用率是一个相对简单且常见的任务。Python提供了多种方法来获取系统信息和进程状态,包括使用标准库中的模块和第三方库。

以下是一些常用的方法和步骤,用于在Ubuntu上使用Python统计不同进程的资源利用率:

方法一:使用psutil

psutil是一个跨平台库,用于检索系统和进程的运行时信息,包括CPU、内存、磁盘、网络等。

  1. 安装psutil

    bash 复制代码
    pip install psutil
  2. 使用psutil获取进程信息

    python 复制代码
    import psutil
    import time
    
    # 获取所有进程
    for proc in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_percent']):
        try:
            # 获取进程ID和名称
            pid = proc.info['pid']
            pname = proc.info['name']
            
            # 获取CPU和内存使用率
            cpu_percent = proc.info['cpu_percent']  # 注意:这可能需要一些时间来稳定
            memory_percent = proc.info['memory_percent']
            
            print(f"PID: {pid}, Name: {pname}, CPU Usage: {cpu_percent}%, Memory Usage: {memory_percent}%")
        except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
            pass  # 忽略访问被拒绝的进程或僵尸进程
    
    # 或者,如果你只想获取特定进程的信息,可以使用pid
    pid_to_monitor = 1234  # 替换为你要监控的进程ID
    try:
        p = psutil.Process(pid_to_monitor)
        print(f"Process {p.name()} (PID: {p.pid}):")
        print(f"  CPU Usage: {p.cpu_percent(interval=1.0)}%")  # interval参数指定采样间隔
        print(f"  Memory Usage: {p.memory_percent()}%")
    except psutil.NoSuchProcess:
        print(f"No such process with PID {pid_to_monitor}")
    except psutil.AccessDenied:
        print(f"Access denied to process with PID {pid_to_monitor}")

方法二:使用subprocess模块调用系统命令

你也可以使用Python的subprocess模块来调用系统命令,如pstophtop,并解析它们的输出。这种方法通常不如直接使用psutil方便,但提供了更多的灵活性。

python 复制代码
import subprocess

# 使用ps命令获取进程信息
def get_process_info_via_ps():
    result = subprocess.run(['ps', '-eo', 'pid,comm,%cpu,%mem'], capture_output=True, text=True)
    lines = result.stdout.splitlines()[1:]  # 跳过标题行
    for line in lines:
        pid, name, cpu, mem = line.split(None, 3)
        print(f"PID: {pid}, Name: {name}, CPU Usage: {cpu}%, Memory Usage: {mem}%")

# 调用函数
get_process_info_via_ps()

注意事项

  • 权限:某些进程信息可能需要超级用户权限才能访问。
  • 性能:频繁地获取进程信息可能会对系统性能产生一定影响,特别是在进程数量很多的情况下。
  • 准确性:CPU使用率等统计信息可能需要一定的采样间隔才能准确计算。

结论

在Ubuntu环境下,使用Python统计不同进程的资源利用率最方便的方法是使用psutil库。它提供了丰富的接口来检索系统和进程信息,并且易于使用。如果你需要更复杂的功能或更高的灵活性,也可以考虑使用subprocess模块来调用系统命令。

相关推荐
2501_9071368225 分钟前
离线工具箱 内含53个小工具
linux·服务器·网络
时空潮汐33 分钟前
神卓N600 NAS身份核验功能深度解析
linux·运维·网络·神卓nas·神卓n600 pro·家庭轻nas
哈哈浩丶39 分钟前
安卓系统全流程启动
android·linux·驱动开发
小李独爱秋39 分钟前
模拟面试:用自己的话解释一下lvs的工作原理
linux·运维·面试·职场和发展·操作系统·lvs
一路往蓝-Anbo1 小时前
第 7 章:内存地图 (Memory Map) 深度设计——DDR 与 SRAM
linux·stm32·单片机·嵌入式硬件·网络协议
BHXDML1 小时前
VMware Workstation Pro 安装详细教程(超详细图文讲解)
linux·虚拟机
一路往蓝-Anbo2 小时前
第 8 章:M33 领航——引导 A35 加载 U-Boot 与 Linux 内核
linux·运维·服务器·stm32·单片机·嵌入式硬件·网络协议
一路往蓝-Anbo3 小时前
第 6 章:GPIO 与外部中断——M33 掌控下的 LED 与按键响应
linux·stm32·单片机·嵌入式硬件
闲人编程4 小时前
任务监控与错误重试
linux·服务器·网络·celery·任务队列·任务监控·错误重试
REDcker6 小时前
FTP协议原理及应用精解
linux·后端·计算机网络·互联网·ftp·服务端开发