如何将htop的CPU单核心使用率快照记录至文本文件或标准输出?
获取htop CPU使用率快照并供Python读取的方法
直接用htop生成快照
htop支持批量模式(Batch Mode),可绕过交互界面,将输出直接打印到标准输出或文件,适合程序读取:
- 输出单次快照到标准输出:
其中htop -b -n 1-b启用批量模式,-n 1指定只输出1次快照(避免持续动态输出)。 - 保存快照到文本文件:
htop -b -n 1 > htop_cpu_snapshot.txt
不过htop的输出包含大量装饰性字符(边框、颜色码),解析起来较繁琐。如果仅需获取单核心CPU使用率,更推荐用专门的系统统计工具mpstat,其输出格式规整,更适合脚本处理。
用mpstat获取易解析的CPU数据
mpstat是sysstat工具集的一部分(多数Linux发行版默认预装,未安装可通过包管理器获取),能直接输出每个CPU核心的使用率:
- 输出所有核心的单次CPU统计:
其中mpstat -P ALL 1 1-P ALL指定显示所有核心,1 1表示间隔1秒采样1次。
Python读取示例
用subprocess模块捕获mpstat输出并解析单核心使用率:
import subprocess import re # 执行mpstat命令并捕获输出 result = subprocess.run( ["mpstat", "-P", "ALL", "1", "1"], capture_output=True, text=True ) # 解析输出,提取每个核心的使用率 cpu_usage = {} for line in result.stdout.splitlines(): # 匹配核心行(格式示例:"CPU 0 9.00 0.00 ...") match = re.match(r'CPU\s+(\d+)\s+(\d+\.\d+)', line) if match: core_num = int(match.group(1)) idle_rate = float(match.group(2)) # 使用率 = 100 - 空闲率 usage_rate = 100 - idle_rate cpu_usage[core_num] = round(usage_rate, 2) print("单核心CPU使用率:", cpu_usage)
内容的提问来源于stack exchange,提问作者keye
相关产品推荐
相关产品推荐

