日常使用巡检
在 Linux 运维中,日常巡检脚本可以帮助管理员自动检测系统健康状况,发现潜在问题并提前预警。以下是一些常用的巡检脚本,涵盖系统性能、网络连接、磁盘使用等常见的监控项目。
1. CPU 和内存使用率检查
#!/bin/bash
echo "=== CPU 和内存使用情况 ==="
echo "CPU 使用率:"
top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}' | awk '{print $1"%"}'
echo "内存使用率:"
free -m | awk 'NR==2{printf "内存使用: %sMB / %sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
功能说明
- 获取 CPU 使用率。
- 获取内存使用情况,包括使用量和百分比。
2. 磁盘空间检查
#!/bin/bash
echo "=== 磁盘空间使用情况 ==="
df -h | awk '$5 > 80 {print "警告!", $0}'
功能说明
- 输出各分区的磁盘空间使用情况。
- 高于 80% 的分区会显示警告信息。
3. 网络连通性检查
#!/bin/bash
echo "=== 网络连通性检查 ==="
ping -c 3 8.8.8.8 &> /dev/null && echo "外网连接正常" || echo "外网连接失败"
ping -c 3 your_internal_ip &> /dev/null && echo "内网连接正常" || echo "内网连接失败"
功能说明
- 通过 Ping 检测与外网(如 8.8.8.8)和内网的连接状况。
4. 服务状态检查
#!/bin/bash
echo "=== 服务状态检查 ==="
services=("nginx" "mysql" "sshd")
for service in "${services[@]}"; dosystemctl is-active --quiet $service && echo "$service 运行正常" || echo "$service 已停止"
done
功能说明
- 检查指定的服务(如
nginx
,mysql
,sshd
)是否正常运行。
5. 最近系统登录情况
#!/bin/bash
echo "=== 最近登录记录 ==="
last -a | head -n 10
功能说明
- 输出最近的 10 条系统登录记录,帮助检查是否有异常登录情况。
6. 检查高负载进程
#!/bin/bash
echo "=== 高负载进程 ==="
ps aux --sort=-%cpu | head -n 5
echo "=== 高内存占用进程 ==="
ps aux --sort=-%mem | head -n 5
功能说明
- 输出 CPU 和内存占用最高的前 5 个进程,便于快速定位资源占用问题。
7. 系统启动时间
#!/bin/bash
echo "=== 系统启动时间 ==="
uptime -p
uptime -s
功能说明
- 输出系统运行时长和启动时间,帮助确定系统稳定性。
8. 检查防火墙状态
#!/bin/bash
echo "=== 防火墙状态 ==="
sudo ufw status || sudo systemctl status firewalld
功能说明
- 检查 UFW 或 Firewalld 防火墙的状态,确保安全防护正常开启。
将以上脚本整合成一个巡检脚本,并设置定时任务(如 cron
),可以帮助自动监控系统状态并发送报告到管理员邮箱,实现自动化巡检。