Linux sysstat 这个包中的 sar 这个命令的输出如何格式化从而减少屏幕空间的占用?

2022-09-21 18:35:29 +08:00
 qemu32

比如 sar 命令的默认输出是这样:

02:20:40 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
02:30:40 PM     all      3.67      0.00      0.96      0.00      0.00     95.36
02:40:40 PM     all      4.27      0.00      1.40      0.01      0.00     94.32
02:50:40 PM     all      2.34      0.00      0.85      0.00      0.00     96.80

我想格式化成这样:

%user     %nice   %system   %iowait    %steal    %idle
3.67      0.00      0.96      0.00      0.00     95.36
4.27      0.00      1.40      0.01      0.00     94.32
2.34      0.00      0.85      0.00      0.00     96.80

也就是不要每行开头的时间以及 cpu 那一列,而且要能支持间隔一定时间持续输出的那种使用方式。

1392 次点击
所在节点    Linux
8 条回复
singerll
2022-09-21 19:21:34 +08:00
sudo sar -u 1 1|grep -v "Linux" | awk '{print $3,$4,$5,$6}'
qemu32
2022-09-21 19:23:25 +08:00
@singerll 感谢回复,不行哦,输出的格式是乱的,而且输出一次就退出了

CPU %user %nice %system
all 0.00 0.00 0.12
all 0.00 0.00 0.12
singerll
2022-09-21 19:31:42 +08:00
输出格式不可能乱吧,我这里没一点问题,至于输出一次就退出,加个循环就行
qemu32
2022-09-21 19:46:39 +08:00
@singerll 列与列之间的分隔变成了只有一个空格,而且一下输出了 2 行,就算我要自己去循环,也不能循环一次输出 2 行啊。
qemu32
2022-09-21 20:25:48 +08:00
@singerll 这条命令可以满足我的需求:

while :; do S_COLORS=never sar 1 1 | grep -v "^Linux" | grep -v "^Average" | grep -v "CPU" | grep -v "^$" | sed 's/^.*all *//'; done

结贴
yougg
2022-09-21 21:21:26 +08:00
sar 1 1 | column -t
qemu32
2022-09-21 22:25:52 +08:00
@yougg 这个输出有啥特别的?
julyclyde
2022-09-22 08:56:22 +08:00
“从 sar 的输出里获得信息”可能是个错误的做法
这东西,我感觉就是给人看的,并不方便给程序解析

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/881951

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX