5

我知道这个 sar 示例,sar -u 1 3它以 1 秒的间隔提供接下来 3 秒的统计信息。

然而 sar 还在后台继续收集信息(我的 cron 设置为每分钟收集一次统计信息)。有什么方法可以让我简单地使用 sar 命令查询过去 5 分钟的统计信息及其平均值。

现在我正在使用以下命令

interval=5; sar -f /var/log/sysstat/sa22 | tail -n $interval | head -n -1 | awk '{print $4+$6}'| awk  '{s+=$1} END {print s/$interval}' 

检查过去 5 分钟内的整体 CPU 使用情况。

有没有更好的办法 ?

4

1 回答 1

0

不幸的是,当在 sar 中使用 -f 选项以及间隔和计数时,它不会返回给定间隔的平均值(如您所料)。相反,它总是返回 sar 文件中的第一个记录值

解决此问题的唯一方法是使用 -s 选项,该选项允许您指定开始采样周期的时间。我在下面提供了一个 perl 脚本,该脚本以对 sar 的调用结束,该脚本的构造方式将返回您正在寻找的内容。

希望这可以帮助。

彼得罗兹。

#!/usr/bin/perl

$interval = 300;        # seconds.
$epoch    = `date +%s`;
$epoch   -= $interval;
$time     = `date -d \@$epoch +%H:%M:00`;
$dom      = `date +%d`;
chomp($time,$dom);
system("sar -f /var/log/sysstat/sa$dom -B -s $time 300 1");

于 2016-08-18T00:47:35.833 回答