实战案例:解决实际问题
理论结合实践是回答shell脚本入门要多久的关键。以下是三个高频实战场景,展示了Shell脚本在运维工作中的价值。
案例一:自动化备份Nginx日志
需求:每天凌晨2点备份Nginx访问日志,保留最近7天的备份,并压缩存储。
#!/bin/bash
定义变量
LOG_DIR="/var/log/nginx"
BACKUP_DIR="/data/backups/nginx"
DATE=$(date +%Y%m%d)
RETENTION_DAYS=7
创建备份目录
mkdir -p DATE
移动并压缩日志
if [ -f $LOG_DIR/access.log ]; then
mv BACKUP_DIR/$DATE/access.log
tar -czf DATE.tar.gz DATE
rm -rf DATE
echo "[$(date)] Backup completed successfully." >> /var/log/backup.log
else
echo "[$(date)] No log file found." >> /var/log/backup.log
fi
清理7天前的备份
find RETENTION_DAYS -delete
案例二:监控磁盘空间并报警
需求:监控根分区使用率,超过85%时发送邮件报警。
#!/bin/bash
THRESHOLD=85
USAGE=5}' | sed 's/%//')
if [ THRESHOLD ]; then
echo "警告:磁盘使用率高达 ${USAGE}%" | mail -s "Disk Alert" admin@example.com
fi
案例三:批量重命名文件
需求:将当前目录下所有 .txt 文件改为 .log 后缀。
for file in .txt; do
mv "{file%.txt}.log"
done