写一个监控脚本,监控系统负载,系统负载超过10,需要记录系统状态信息。
1.系统负载命令uptime查看,过去一分钟的平均负载
2.系统状态使用:top、vmstat、ss
3.要求每个20s监控一次
4.系统状态保存到/opt/logs/下面,保留7天,文件名建议带有`date F`后缀
#!/bin/bash
#author:tongby
#version:t1
#date:2023-10-16
[ -f /opt/logs ] || mkdir -p /opt/logs
while :
do
load=`uptime |awk -F 'average:' '{print $2}'|cut -d',' -f1|sed 's/ //g' |cut -d. -f1`
if [ $load -gt 10 ]
then
top -bn1 |head -n 100 > /opt/logs/top.`date +%F`
vmstat 1 10 > /opt/logs/vmstat.`date +%F`
ss -an > /opt/logs/ss.`date +%F`
fi
sleep 10
find /opt/logs \( -name "top*" -o -name "vmstat*" -o -name "ss.*" \) -mtime +7 |xargs rm -f
done
静态打印所有进程
top -bn1
获得有关进程、虚存、页面交换空间及 CPU活动的信息,每一秒取一次,取十次
vmstat 1 10
显示所有socket连接
ss -an