#!/bin/bash
##首先看/opt/logs目录在不在,不在就创建
[ -d /opt/logs ] || mkdir -p /opt/logs
##while死循环
while :
do
## 获取系统1分钟的负载,并且只取小数点前面的数字
load=`uptime |awk -F 'average:' '{print $2}'|cut -d',' -f1|sed 's/ //g' |cut -d. -f1`
# 使用 uptime 命令获取系统负载信息,然后用 awk 从输出中提取出负载值,
# cut 命令用于移除逗号后的部分,sed 命令用于去除空格,最后 cut 命令用于提取小数点前的整数部分,
# 赋值给变量 load
if [ $load -gt 10 ]
then
##分别记录top,vmstat和ss命令的执行结果
top -bn1 | head -n 100 > /opt/logs/top.`date +%s`
# 执行 top 命令并将前100行输出保存到以当前时间戳命名的文件中
vmstat 1 10 > /opt/logs/vmstat.`date +%s`
# 执行 vmstat 命令,每秒采集一次数据,共采集10次,并将输出保存到以当前时间戳命名的文件中
ss -an > /opt/logs/ss.`data +%s`
# 执行 ss 命令以获取当前网络连接信息,并将输出保存到以当前时间戳命名的文件中
fi
##休眠20秒
sleep 20
##找到30天以前的日志文件删除掉
find /opt/logs \( -name "top*" -o -name "vmstat*" -o -name "ss*" \) -mtime +30 |xargs rm -f
done