Linux 脚本实例:自动化任务与系统管理
Linux 脚本是系统管理和日常运维中的利器,通过编写简单的脚本,可以自动化重复性任务、提升工作效率,并实现复杂的系统管理功能,本文将介绍几个实用的 Linux 脚本实例,涵盖文件处理、系统监控、日志分析等场景,帮助读者掌握脚本的编写技巧与应用方法。

文件批量处理脚本
在服务器运维中,经常需要对大量文件进行批量处理,例如重命名、格式转换或内容替换,以下是一个批量重命名文件的脚本示例,将当前目录下所有 .txt 文件的后缀修改为 .bak:
#!/bin/bash
# 批量重命名文件:将.txt改为.bak
for file in *.txt; do
if [ -f "$file" ]; then
mv "$file" "${file%.txt}.bak"
echo "重命名: $file -> ${file%.txt}.bak"
fi
done
脚本解析:
for file in *.txt:遍历当前目录下所有.txt文件。if [ -f "$file" ]:检查文件是否存在,避免处理目录。mv "$file" "${file%.txt}.bak":使用参数扩展${file%.txt}去除.txt后缀,并添加.bak。
运行此脚本前需赋予执行权限:chmod +x rename_files.sh。
系统资源监控脚本
服务器的 CPU、内存和磁盘使用率是运维关注的重点,以下脚本每 5 秒采集一次系统资源数据,并输出到终端:
#!/bin/bash
# 系统资源监控脚本
while true; do
echo "===== $(date) ====="
echo "CPU 使用率: $(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}')"
echo "内存使用率: $(free | grep Mem | awk '{print ($3/$2) * 100.0"%"}')"
echo "磁盘使用率: $(df -h / | awk 'NR==2{print $5}')"
sleep 5
done
脚本解析:

top -bn1:静态输出 CPU 使用率,避免动态刷新。free | grep Mem:提取内存使用情况,计算占用百分比。df -h /:查看根分区磁盘使用率。
此脚本可结合 nohup 后台运行,或通过 cron 定时执行。
日志分析与报警脚本
当系统日志中出现错误时,及时报警至关重要,以下脚本监控 /var/log/nginx/error.log,若检测到 ERROR 关键词,则发送邮件通知:
#!/bin/bash
# 日志监控与报警脚本
LOG_FILE="/var/log/nginx/error.log"
KEYWORD="ERROR"
EMAIL="admin@example.com"
tail -f "$LOG_FILE" | while read line; do
if echo "$line" | grep -q "$KEYWORD"; then
echo "检测到错误: $line" | mail -s "Nginx 错误报警" "$EMAIL"
fi
done
脚本解析:
tail -f:实时跟踪日志文件新增内容。grep -q:静默匹配关键词,避免输出干扰。mail命令需系统已配置邮件服务(如 Postfix)。
自动化备份脚本
数据备份是防止数据丢失的重要手段,以下脚本每日备份 /home 目录,并保留最近 7 天的备份:
#!/bin/bash # 自动备份脚本 BACKUP_DIR="/backup" SOURCE_DIR="/home" DATE=$(date +%Y%m%d) # 创建备份目录 mkdir -p "$BACKUP_DIR" # 执行备份并压缩 tar -czf "$BACKUP_DIR/home_backup_$DATE.tar.gz" "$SOURCE_DIR" # 删除 7 天前的备份 find "$BACKUP_DIR" -name "home_backup_*.tar.gz" -mtime +7 -delete echo "备份完成: $BACKUP_DIR/home_backup_$DATE.tar.gz"
脚本解析:

tar -czf:将目录打包为.tar.gz压缩文件。find -mtime +7:查找并删除超过 7 天的旧备份。
可通过 cron 设置定时任务,例如每日凌晨 2 点执行:0 2 * * * /path/to/backup.sh。
脚本编写注意事项
- 权限管理:确保脚本有执行权限,且敏感操作(如
sudo)需配置免密码或使用sudoers文件。 - 错误处理:使用
set -e在命令失败时退出脚本,避免错误累积。 - 日志记录:关键操作建议输出日志,便于排查问题。
- 变量安全:对用户输入或外部变量进行校验,防止命令注入攻击。
通过以上实例,读者可以快速上手 Linux 脚本编写,并根据实际需求扩展功能,脚本的灵活性使其成为 Linux 系统管理的核心工具,掌握脚本技能不仅能提升工作效率,还能为复杂的自动化场景奠定基础。


















