有没有办法只使用 sar 显示给定天数的平均值。我目前正在做类似以下的事情:
sar -u -s 00:00:00 -e 23:59:59 -f /var/log/sysstat/sa10
只需将最后(平均)行添加到报告中即可。但如果我可以通过一个论点来给出平均值,那么生成我的报告就会很好而且很容易。我在 sar 文档中找不到这样的选项。所以,除非我错过了,否则我猜这个选项是“否”。但是,我很可能错过了它,或者除了 sar 之外可能还有其他工具可能会公开此功能。
答案1
您可以通过将 tail 命令通过管道传递到您的命令来找到平均值。通过这种方式,您的命令将始终只返回一行。
sar -u -s 00:00:00 -e 23:59:59 -f /var/log/sysstat/sa10 | tail -1
答案2
不使用 sar...但该软件包中的会计实用程序可以帮助您计算给定天数的 SAR 输出。这通常安装为 crontab 条目(已注释掉),有时以 root 身份运行为 adm 或 sys。在更高版本的 Linux 中,它安装为 /etc/cron.d/sysstat。查看 sa1 和 sa2 命令。它们是 /usr/lib64/sa/sa1 和 sa2,并且作为一个团队工作。 sa1 在调用时以二进制形式存储数据,sa2 从 sa1 获取二进制文件并生成包含平均值的文本报告。
关于这个方案有足够的信息,只需进行适当的谷歌搜索,例如“linux sautilities”。
答案3
使用 tail 需要您知道您预期平均统计数据有多少行。如果您想要每个 cpu 的平均统计信息并且您已使用 -P ALL 那么 tail 命令会很麻烦。
我建议简单地 grep'ing for Average
.要获取标头(由 sadc 插入的注释),您需要添加 -C 选项:
# sar -P ALL -C | grep Average:
Average: CPU %user %nice %system %iowait %steal %idle
Average: all 3.06 0.00 1.22 0.00 0.00 95.72
Average: 0 0.55 0.00 0.23 0.01 0.00 99.21
Average: 1 1.96 0.00 0.77 0.00 0.00 97.26
Average: 2 3.84 0.00 1.63 0.00 0.00 94.52
Average: 3 0.59 0.00 0.24 0.00 0.00 99.17
Average: 4 0.51 0.00 0.27 0.01 0.00 99.21
Average: 5 1.78 0.00 0.74 0.01 0.00 97.47
Average: 6 8.02 0.00 3.16 0.01 0.00 88.81
Average: 7 6.75 0.00 2.61 0.00 0.00 90.64
Average: 8 10.93 0.00 4.20 0.01 0.00 84.86
Average: 9 6.47 0.00 2.54 0.01 0.00 90.98
Average: 10 9.76 0.00 3.72 0.02 0.00 86.50
Average: 11 5.42 0.00 2.03 0.01 0.00 92.54
Average: 12 0.07 0.00 0.05 0.00 0.00 99.89
Average: 13 0.31 0.00 0.18 0.00 0.00 99.51
Average: 14 0.02 0.00 0.21 0.00 0.00 99.78
Average: 15 0.06 0.00 0.08 0.00 0.00 99.86
Average: 16 0.14 0.00 0.07 0.00 0.00 99.79
Average: 17 0.03 0.00 0.04 0.00 0.00 99.93
Average: 18 8.03 0.00 3.16 0.00 0.00 88.80
Average: 19 1.41 0.00 0.56 0.00 0.00 98.02
Average: 20 2.62 0.00 1.06 0.00 0.00 96.32
Average: 21 0.37 0.00 0.16 0.00 0.00 99.47
Average: 22 0.07 0.00 0.04 0.00 0.00 99.89
Average: 23 3.66 0.00 1.43 0.00 0.00 94.90