服务器维护脚本指南
在服务器的日常运维中,通过自动化脚本执行重复性任务可以极大地提高效率并降低人为操作失误的风险,以下为您提供一套涵盖系统更新、日志清理、备份及资源监控的专业维护脚本方案。
综合系统维护脚本 (Ubuntu/Debian)
该脚本用于执行基础的系统更新、清理冗余软件包以及检查磁盘空间。
#!/bin/bash # 定义日志文件 LOG_FILE="/var/log/server_maintenance.log" echo "--- 维护开始: $(date) ---" >> $LOG_FILE # 1. 更新软件包列表 echo "正在更新软件包列表..." apt-get update -y >> $LOG_FILE 2>&1 # 2. 升级已安装的软件包 echo "正在升级软件包..." apt-get upgrade -y >> $LOG_FILE 2>&1 # 3. 清理不再需要的依赖包 echo "正在清理冗余包..." apt-get autoremove -y >> $LOG_FILE 2>&1 apt-get autoclean -y >> $LOG_FILE 2>&1 # 4. 检查磁盘空间使用情况 echo "磁盘空间检查:" >> $LOG_FILE df -h >> $LOG_FILE echo "--- 维护结束: $(date) ---" >> $LOG_FILE echo "维护完成,详情请查看 $LOG_FILE"
日志清理脚本
为了防止日志文件撑爆磁盘,可以使用此脚本清理超过指定天数的旧日志文件。
#!/bin/bash
# 配置项
LOG_DIR="/var/log/myapp" # 替换为你的应用日志路径
RETENTION_DAYS=7 # 保留7天内的日志
echo "开始清理 $LOG_DIR 中超过 $RETENTION_DAYS 天的日志..."
# 查找并删除旧日志
find $LOG_DIR -type f -name ".log" -mtime +$RETENTION_DAYS -exec rm -rf {} ;
if [ $? -eq 0 ]; then
echo "日志清理成功: $(date)"
else
echo "日志清理失败: $(date)"
fi
自动化备份脚本
该脚本将指定的目录压缩备份,并添加时间戳,适用于配置文件的定期备份。
#!/bin/bash
# 配置项
SOURCE_DIR="/etc/nginx" # 备份源目录
BACKUP_DIR="/backup/nginx" # 备份存放目录
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_NAME="nginx_backup_$TIMESTAMP.tar.gz"
# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR
# 执行压缩备份
tar -czf $BACKUP_DIR/$BACKUP_NAME $SOURCE_DIR
# 删除 30 天前的旧备份以节省空间
find $BACKUP_DIR -type f -name ".tar.gz" -mtime +30 -exec rm -rf {} ;
echo "备份完成: $BACKUP_NAME"
资源健康检查脚本
该脚本用于快速监控 CPU、内存和磁盘状态,并在资源紧张时发出警告。
#!/bin/bash
# 阈值设置
CPU_THRESHOLD=80
MEM_THRESHOLD=80
DISK_THRESHOLD=90
# 检查 CPU 使用率
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/., ([0-9.])% id./1/" | awk '{print 100 - $1}')
# 检查 内存 使用率
MEM_USAGE=$(free | grep Mem | awk '{print $3/$2 100.0}')
# 检查 磁盘 使用率
DISK_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
echo "当前资源状态: CPU: ${CPU_USAGE}%, MEM: ${MEM_USAGE}%, DISK: ${DISK_USAGE}%"
# 简单的告警逻辑
if (( $(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc -l) )); then
echo "警告: CPU 使用率过高!"
fi
if (( $(echo "$MEM_USAGE > $MEM_THRESHOLD" | bc -l) )); then
echo "警告: 内存使用率过高!"
fi
if [ "$DISK_USAGE" -gt "$DISK_THRESHOLD" ]; then
echo "警告: 磁盘空间不足!"
fi
部署与自动化执行
为了让脚本自动运行,建议使用
crontab 定时任务。
-
赋予执行权限:
chmod +x /path/to/your_script.sh -
配置定时任务:
输入crontab -e进入编辑模式,添加以下配置: -
每周日凌晨 3 点执行系统维护:
- 0 3 0 /bin/bash /path/to/maintenance.sh -
每天凌晨 2 点清理日志:
- 0 2 /bin/bash /path/to/log_clean.sh -
每小时检查一次资源状态:
- 0 /bin/bash /path/to/health_check.sh
维护注意事项
- 备份优先:在运行任何涉及
rm或upgrade的脚本前,请确保已有完整快照。 - 权限控制:涉及系统目录的操作需使用
root权限或sudo。 - 日志记录:所有自动化脚本应将输出重定向到日志文件,方便在出错时回溯排查。
- 逐步测试:在正式部署到生产环境前,请先在测试环境验证脚本逻辑。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/491425.html



