Linux 中过去 2-3 小时的 CPU 使用率(按分钟)

Linux 中过去 2-3 小时的 CPU 使用率(按分钟)

我想知道我的 Linux 机器每分钟的 CPU 利用率。我尝试使用,sar但我得到的是 10 分钟间隔的结果。我如何获取每分钟的结果?

答案1

您可以使用 cron 和一些简单的 shell 命令来完成此操作,这些命令重量轻并且不会引入太多额外负载,从而避免扭曲结果。

我刚刚整理了一个:

aq> crontab -l
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR     sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

* * * * * uptime | sed 's/.*://' | cat - /tmp/cputime | head -180 > /tmp/cputime2 ; mv /tmp/cputime2 /tmp/cputime

aq> cat /tmp/cputime

1.28, 0.73, 0.56
0.38, 0.41, 0.45
0.38, 0.41, 0.45
0.38, 0.41, 0.45
0.38, 0.41, 0.45
0.38, 0.41, 0.45

这会将帖子置顶到文件中,并且仅保留最后 180 分钟 = 3 小时的输出。

答案2

我尝试使用sar,但得到的结果是 10 分钟间隔的结果。如何按分钟获取结果?

sar读取 sysstat 工具集中的脚本写入的文件。Sysstat 使用 cronsa1定期运行。在我的 Kubuntu 中,相关文件是/etc/cron.d/sysstat。此行

5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1

负责debian-sa1每 10 分钟运行一次(debian-sa1是一个包装器sa1;如果您的发行版既不是 Debian 也不是其衍生产品,sa1那么您可能应该使用 sole)。

修改此行以获得您想要的(无需重启 cron两种方式:

  1. 更改时间表。直接每分钟运行该工具:

    * * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
    
  2. 更改命令。sa1本身可以迭代测量,语法是sa1 interval count。每十分钟运行一次该工具,但让每次调用以 60 秒的间隔进行 10 次测量:

    5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 10
    

    (注意在这种情况下5-55/10也可能是*/10)。

后一种方法似乎过于复杂,但如果您想每分钟进行多次测量,这种方法很有用。 Cron 不会精确到分钟以下,而是sa1使用秒。示例:

* * * * * root command -v debian-sa1 > /dev/null && debian-sa1 10 6

意思是“每分钟进行 6 次测量,间隔 10 秒”。这里 cron 负责“每分钟”部分,然后每个新sa1进程进行“6 次测量,间隔 10 秒”。

设置完成后,只需sar调用即可获取“过去 2-3 小时”的数据(尝试使用-s-e选项,请参阅man 1 sar详细信息)。

相关内容