gpt4 book ai didi

linux - 如何将 Unix 'Top' 命令输出捕获到 CSV 文件?

转载 作者:太空狗 更新时间:2023-10-29 11:36:18 26 4
gpt4 key购买 nike

我正在尝试通过 shell 脚本获取 top 命令的前 5 行,我需要将输出写入 csv 文件(我需要在每 15 秒)。最后,我需要使用获得的数据表绘制图表。

我得到了将 top 命令的前 5 行写入 txt 文件的 shell 脚本:

#!/bin/bash
echo "execution started.."

top -b -n 3 | sed -n '7,1p' >> out.txt

while [ true ]; do
sleep 15
echo "running.."
top -b -n 3 | sed -n '8, 12p' >> out.txt
done

这是几次执行后的 out.txt 文件:

    PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
3983 arun 20 0 1662480 309580 40936 S 26.3 6.4 13:36.00 gnome-shell
17907 arun 20 0 130020 1680 1172 R 10.5 0.0 0:00.03 top
2016 root 20 0 221792 51172 9636 S 5.3 1.1 4:40.97 Xorg
11917 arun 20 0 7004884 570312 22040 S 5.3 11.7 0:48.83 java
1 root 20 0 59732 7156 3992 S 0.0 0.1 0:02.71 systemd
3983 arun 20 0 1662480 309580 40936 S 36.8 6.4 13:37.23 gnome-shell
2016 root 20 0 221792 51172 9636 S 10.5 1.1 4:41.14 Xorg
2720 mongod 20 0 624364 33716 5200 R 5.3 0.7 1:44.36 mongod
17918 arun 20 0 130020 1676 1172 R 5.3 0.0 0:00.02 top
1 root 20 0 59732 7156 3992 S 0.0 0.1 0:02.71 systemd
3983 arun 20 0 1662480 309580 40936 S 25.0 6.4 13:38.60 gnome-shell
2720 mongod 20 0 624364 33672 5160 S 5.0 0.7 1:44.46 mongod
12081 arun 20 0 2687496 314248 21436 S 5.0 6.5 3:05.51 java
17922 arun 20 0 130020 1680 1172 R 5.0 0.0 0:00.02 top
1 root 20 0 59732 7156 3992 S 0.0 0.1 0:02.71 systemd

但我需要 csv 格式的相同数据。我试图通过将输出文件名命名为 out.csv 来做到这一点!但这没有用。 (因为它的格式不正确,所以整个数据都在第一个 shell 中!)

您能否提供将相同输出写入csv 文件的解决方案?

最佳答案

如果你想减少空格并用逗号替换它们,试试

top -b -n 3 | sed -n '8, 12{s/^ *//;s/ *$//;s/  */,/gp;};12q'

sed 脚本在第 8 行到第 12 行执行以下替换:

  • 将任何前导空格替换为空(否则,当 PID 右对齐时,第一列为空)。
  • 将所有尾随空格替换为空(类似于避免数据后出现空字段)。
  • 用逗号替换任何剩余的相邻空格。打印这一行。

最后,在第 12 行,我们完成了,所以我们退出 sed

shell 不会注意您重定向到的文件的名称,通常,Unix 上的文件扩展名是非正式的装饰,而不是像某些平台上那样的文件类型说明符。

你可以执行 echo hello >outputfile.ps 并且输出仍然是文本,而不是 PostScript(或者 .ps 文件扩展名的许多其他可能的解释).在任何情况下,echo 命令都不知道它正在被重定向,因为它在命令运行之前由 shell 处理,无论如何。 (好吧,echo 是一个内置的 shell,因此理论上在这种情况下可能会有一些协调。)

关于linux - 如何将 Unix 'Top' 命令输出捕获到 CSV 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34992167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com