python实时得到cpu和内存的使用情况

本文介绍了一个简单的Python脚本,用于实时监控并显示计算机的内存和CPU使用情况。通过使用psutil库,该脚本能够获取系统当前的内存占用百分比及CPU使用率,并定时刷新显示这些数据。
#先下载psutil库:pip install psutil
import psutil
import os,datetime,time

def     getMemCpu():
        data = psutil.virtual_memory()
        total = data.total #总内存,单位为byte
        free = data.available #可以内存
        memory =  "Memory usage:%d"%(int(round(data.percent)))+"%"+"  "
        cpu = "CPU:%0.2f"%psutil.cpu_percent(interval=1)+"%"
        return memory+cpu

def     main():

        while(True):
            info = getMemCpu()
            time.sleep(0.2)
            print info+"\b"*(len(info)+1),

if      __name__=="__main__":
        main()

这里写图片描述

<think>嗯,用户想用Python远程连接Linux系统查询CPU内存使用情况。根据之前的引用内容,他们提到了psutil模块,这应该是个关键点。首先,我需要确认用户的需求是远程连接,而不仅仅是本地监控。可能需要使用SSH库,比如paramiko。然后,用户之前的问题中提到了psutil可以获取系统信息,但这是在本地使用的情况。远程的话,可能需要在Linux服务器上运行一个脚本,然后通过SSH获取结果。或者,直接在Python脚本中使用paramiko执行远程命令,比如top或free,然后解析输出。 另外,引用[4]里提到通过/proc文件系统计算CPU利用率,这可能是一个备选方案,但需要用户有权限访问这些文件。不过使用psutil可能更简单,因为psutil已经封装了这些底层信息,跨平台也更好。需要分步骤来:首先建立SSH连接,然后在远程执行命令获取CPU内存数据。或者,在远程服务器上运行一个使用psutil的Python脚本,将结果返回给客户端。可能还需要考虑安全性,比如使用密钥认证而不是密码。另外,处理命令输出的格式,可能需要用正则表达式提取所需的数据。用户可能希望得到具体的代码示例,所以需要展示如何使用paramiko连接并执行命令,或者如何在远程调用psutil。同时,要注意异常处理,比如连接失败或命令执行出错的情况。 最后,生成相关问题,比如如何定时监控,或者如何将数据可视化,或者如何监控多个服务器,这些可能都是用户后续会关心的问题。</think>### Python远程监控Linux系统资源使用方案 --- #### 1. **SSH连接基础框架** 使用paramiko库实现安全连接: ```python import paramiko def remote_exec(host, user, key_path, cmd): """远程执行命令核心函数[^2]""" client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: client.connect(hostname=host, username=user, key_filename=key_path) _, stdout, stderr = client.exec_command(cmd) return stdout.read().decode('utf-8'), stderr.read().decode('utf-8') finally: client.close() # 示例:获取内存信息 output, error = remote_exec('192.168.1.100', 'admin', '~/.ssh/id_rsa', 'free -m') print(f"内存使用:\n{output}") ``` --- #### 2. **使用psutil远程监控** 在目标服务器安装psutil后远程调用: ```python remote_script = ''' import psutil print(f"CPU使用率: {psutil.cpu_percent(interval=1)}%") print(f"内存使用: {psutil.virtual_memory().percent}%") ''' output, _ = remote_exec('192.168.1.100', 'admin', '~/.ssh/id_rsa', f'python3 -c "{remote_script.replace(\'"\', \'\\\"\')}"') print(output) ``` 输出示例: ``` CPU使用率: 12.5% 内存使用: 68.2% ``` --- #### 3. **原生命令解析方案** 直接解析Linux系统命令输出: ```python def parse_cpu_usage(output): """解析top命令的CPU使用率[^4]""" lines = output.split('\n') cpu_line = next(l for l in lines if l.startswith('%Cpu(s)')) return 100 - float(cpu_line.split(',')[3].strip().replace('id','')) # 执行top命令并解析 output, _ = remote_exec(host, user, key_path, 'top -bn1') cpu_usage = parse_cpu_usage(output) print(f"CPU总利用率: {cpu_usage:.1f}%") ``` --- #### 4. **性能数据采集公式** CPU利用率计算公式: $$ \text{CPU利用率} = 100 - \frac{(\text{idle}_2 - \text{idle}_1) \times 100}{(\text{total}_2 - \text{total}_1)} $$ 其中$\text{total} = \text{user} + \text{system} + \text{nice} + \text{idle} + \text{iowait} + \text{irq} + \text{softirq}$[^4] --- #### 5. **实时监控示例** ```python import time while True: # 获取CPU温度(需root权限) temp_output, _ = remote_exec(host, user, key_path, 'cat /sys/class/thermal/thermal_zone0/temp') cpu_temp = float(temp_output)/1000 # 转换为摄氏度 # 获取内存数据 mem = psutil.virtual_memory() print(f"时间: {time.strftime('%H:%M:%S')}") print(f"CPU温度: {cpu_temp:.1f}℃ | 内存使用: {mem.percent}%") time.sleep(5) ``` 输出示例: ``` 时间: 14:23:05 CPU温度: 48.5℃ | 内存使用: 65.2% ``` --- ### 方案对比 | 方法 | 优点 | 缺点 | |---------------|--------------------------|------------------------| | paramiko+命令 | 无需安装额外依赖 | 需要解析复杂命令输出 | | psutil方案 | 数据精度高,接口统一 | 需远程安装Python环境 | | /proc解析 | 底层数据最准确 | 需要root权限支持 | ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值