关于#自动化#的问题:怎样编写一个脚本来实现查看24小时内的cpu,磁盘使用率的峰值

怎样编写一个脚本来实现查看24小时内的cpu,内存,磁盘使用率的峰值?

该回答引用chatgpt:
要编写一个脚本来查看过去24小时内的CPU、内存和磁盘使用率的峰值,可以使用Linux系统自带的一些工具来实现。以下是一种可能的实现方式:

#!/bin/bash

# 设置起始和结束时间(当前时间和24小时前的时间)
end_time=$(date +%s)
start_time=$(date --date="24 hours ago" +%s)

# 获取过去24小时内的CPU、内存和磁盘使用率数据,并从中找到峰值
cpu_peak=$(sar -u -f /var/log/sysstat/sa$(date +%d -d "yesterday") | awk -v start=$start_time -v end=$end_time '{if ($1 >= start && $1 <= end) print $3}' | sort -rn | head -1)
mem_peak=$(sar -r -f /var/log/sysstat/sa$(date +%d -d "yesterday") | awk -v start=$start_time -v end=$end_time '{if ($1 >= start && $1 <= end) print $4}' | sort -rn | head -1)
disk_peak=$(sar -d -p -f /var/log/sysstat/sa$(date +%d -d "yesterday") | awk -v start=$start_time -v end=$end_time '{if ($1 >= start && $1 <= end) print $10}' | sort -rn | head -1)

# 输出结果
echo "过去24小时内的CPU峰值为:$cpu_peak%"
echo "过去24小时内的内存峰值为:$mem_peak%"
echo "过去24小时内的磁盘峰值为:$disk_peak%"



在上面的代码中,我们使用了 sar 工具来获取系统的CPU、内存和磁盘使用率数据,并使用 awk 和 sort 工具来从中找到峰值。具体来说,我们使用 awk 工具来过滤出在指定时间范围内的数据,然后使用 sort 工具将数据按降序排列,最后使用 head 工具来获取排名第一的数据(即峰值)。

需要注意的是,由于系统默认每隔一定时间就会记录一次性能数据到日志文件中,因此需要确保日志文件存在并包含了过去24小时内的数据。如果您的系统没有启用 sysstat 工具,可以通过安装 sysstat 包来启用该工具并开始记录性能数据。同时,为了保护敏感信息,最好将脚本加上权限限制,例如只允许特定用户运行脚本