CentOS定期维护清单与自动化方案
一 维护周期与核心任务
| 周期 | 关键任务 | 要点 |
|---|---|---|
| 每日 | 检查系统健康与告警 | 查看资源使用(CPU、内存、磁盘)、关键服务状态、登录与安全日志异常 |
| 每周 | 补丁与仓库更新 | 执行安全/常规更新、清理缓存、核对更新日志 |
| 每月 | 安全与配置核查 | 防火墙与端口、SSH加固、用户与权限、SELinux、备份校验 |
| 每季 | 容量与性能评估 | 磁盘增长趋势、I/O与网络基线、慢查询/慢进程优化 |
| 每半年 | 灾备演练与审计 | 恢复演练、备份有效性验证、漏洞扫描与合规审计 |
| 按需 | 内核与驱动 | 评估并升级内核/驱动,变更窗口内实施与回滚预案 |
二 系统更新与补丁管理
三 安全加固与访问控制
四 日志与磁盘空间维护
/var/log/myapp/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 root adm
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
五 备份恢复与巡检自动化
#!/usr/bin/env bash
LOGDIR="/var/log/"
logs=(boot.log messages secure)
for log in "${logs[@]}"; do
echo "=== $log ==="
grep -iE 'fail|error|warning' "${LOGDIR}${log}"
done
#!/usr/bin/env bash
THRESHOLD=80
usage=$(df -Ph / | awk 'NR==2 {print $5}' | tr -d '%')
if [ "$usage" -gt "$THRESHOLD" ]; then
echo "WARN: Rootfs usage ${usage}% > ${THRESHOLD}%"
else
echo "OK: Rootfs usage ${usage}%"
fi
#!/usr/bin/env bash
for svc in sshd rsyslog crond nginx mysqld; do
if systemctl is-active --quiet "$svc"; then
echo "$svc: running"
else
echo "ERROR: $svc: stopped"
fi
done