使用 top 命令查找 CPU 使用率

使用 top 命令查找 CPU 使用率

我目前正在使用

top -b -d 1 > file1.csv

将整个输出附加到 csv 文件。但是,我希望在 file1 中单独输入 Cpu(%us) 字段。我目前为止做到了这一点:

top -b -d 1|grep Cpu 

我只能查看 Cpu 条目。

当我尝试

top -b -d 1|grep Cpu > file1.csv

它似乎不起作用,因为我甚至无法查看我的文件。

我的目的是动态绘制所有 CPU 值(存储在 csv 文件中)的 LiveGraph。谢谢!

答案1

总 CPU 使用率:

如果你只想要了解 CPU 使用率,可以尝试以下操作:

top -b -d1 -n1|grep -i "Cpu(s)"|head -c21|cut -d ' ' -f3|cut -d '%' -f1 > file1.csv

这将仅为您提供 CPU 值并更新文件中的值。如果您想将数据附加到文件(因为我看到您将其命名为 csv 文件),那么不要使用 one >,而要使用 two,例如>> file1.csv

对于每个线程和 CPU 使用率:

首先,您需要消除其余的列,这样更容易获取 CPU 数据。

  1. 运行top并按F
  2. 在此菜单中,您可以选择要查看的列和不查看的列。对于您的情况,只需保留 CPU 列和名称(如果您需要名称)
  3. 按下ESC返回主顶部菜单并使用 Capital 保存西更改。现在您的命令更容易解析。

现在,对于一般的 CPU 使用率,您通常有其他工具,例如psiostat执行cat /proc/stat。对于每个工具,您需要不同的解析,例如用于 top 的解析。我在这里只发布了 TOP,因为您在标题中明确提到了它。

笔记:应该注意的是,top 并不是查看 CPU 使用率或解析其值的最有效方法。对于某些用户,使用 cut 命令中的 f2 可以显示值,而对于其他用户,使用 f3

在此处输入图片描述

答案2

我认为使用top可能不是最好的方法。我会考虑使用 /proc/stat。我发现了一篇名为“从 /proc/stat 计算 CPU 使用率“这也许能解决您的大部分问题。

答案3

这需要一点时间,因为在管道开始工作之前似乎需要填充一个缓冲区。

首先尝试少量的迭代(注意:-n2 表示 2 次迭代):

top -b -d1 -n2 | grep Cpu | cut -c 35-39

关于您的评论:如果您将标准输出重定向到带有的文件top -b -d 1 > file.csv,则无法将标准输出通过管道传输到 grep 命令中。

看:

echo "Standard output" | grep "out"

对阵

echo "Standard output" >/tmp/foo | grep "out"

在第二种情况下,您没有任何输出。

答案4

top -b -n1 | grep Cpu | sed -r 's@.+:\s([0-9\.]+).+@\1@'

正如前面所述,选项 -b 与 -n 1 结合使用将从顶部输出单个文本,而不是不断更新的默认设置。然后,您可以通过管道传输到 sed 来查找您要查找的值。

相关内容