You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本问题:无法将top命令输出写入cpu.csv与mem.csv

脚本错误排查与修复

你的脚本存在几个关键问题,导致目标文件无法生成:

1. 后台运行top且未传递输出

你用top -b -n 1 &让top在后台执行,后续的grep命令没有从top的输出中读取内容,而是会一直等待用户输入,脚本卡在这一步,自然无法生成csv文件。

2. 缺少管道连接top与grep

要提取top的输出内容,必须通过管道(|)将top的输出直接传递给grep,而非分开执行命令。

修复后的脚本

推荐使用单次top执行+批量处理的方式,避免两次执行top导致时间戳与数据不匹配:

#!/bin/bash

# 获取当前时间戳,确保和top采集时间一致
TIMESTAMP=$(date +"%Y-%m-%d-%H:%M:%S")

# 执行top并通过管道批量提取所需行,再写入文件
top -b -n 1 | {
    CPU_LINE=$(grep "Cpu(s)")
    MEM_LINE=$(grep "KiB Mem")
    echo "$TIMESTAMP,$CPU_LINE" >> cpu.csv
    echo "$TIMESTAMP,$MEM_LINE" >> mem.csv
}

如果需要分开执行top(效率稍低),也可以用以下写法:

#!/bin/bash

TIMESTAMP=$(date +"%Y-%m-%d-%H:%M:%S")

CPU_LINE=$(top -b -n 1 | grep "Cpu(s)")
MEM_LINE=$(top -b -n 1 | grep "KiB Mem")

echo "$TIMESTAMP,$CPU_LINE" >> cpu.csv
echo "$TIMESTAMP,$MEM_LINE" >> mem.csv

额外提示

  • 若你的系统中top的内存行显示为MiB Mem而非KiB Mem,需要调整grep的匹配字符串。

内容的提问来源于stack exchange,提问作者user22672115

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:27:05