服务器测评网
我们一直在努力

linux 脚本实例

Linux 脚本实例:自动化任务与系统管理

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  

脚本解析

linux 脚本实例

  • 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"  

脚本解析

linux 脚本实例

  • tar -czf:将目录打包为 .tar.gz 压缩文件。
  • find -mtime +7:查找并删除超过 7 天的旧备份。

可通过 cron 设置定时任务,例如每日凌晨 2 点执行:0 2 * * * /path/to/backup.sh

脚本编写注意事项

  1. 权限管理:确保脚本有执行权限,且敏感操作(如 sudo)需配置免密码或使用 sudoers 文件。
  2. 错误处理:使用 set -e 在命令失败时退出脚本,避免错误累积。
  3. 日志记录:关键操作建议输出日志,便于排查问题。
  4. 变量安全:对用户输入或外部变量进行校验,防止命令注入攻击。

通过以上实例,读者可以快速上手 Linux 脚本编写,并根据实际需求扩展功能,脚本的灵活性使其成为 Linux 系统管理的核心工具,掌握脚本技能不仅能提升工作效率,还能为复杂的自动化场景奠定基础。

赞(0)
未经允许不得转载:好主机测评网 » linux 脚本实例