我正在尝试通过shell脚本获取
我已经得到了一个shell脚本,可以将
这是几次执行后的out.txt文件内容:
top
命令的前5行,并需要将输出写入csv文件(我需要每15秒监视结果)。最后,我需要使用获取的数据表绘制图形。我已经得到了一个shell脚本,可以将
top
命令的前5行写入txt文件:#!/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 来实现!但是失败了(因为它不是正确的格式,整个数据都在第一个单元格中!)
请问您能否提供一种方法将相同的输出写入 csv 文件中?
while [ true ]
只是巧合地起作用。while [ false ]
也会做同样的事情。你可能指的是没有括号的while true
(这是 shell 内置命令test
的同义词)。 - tripleeeps
以自定义格式转储CPU使用数据。 - Andre Holzner