别再只会敲命令!Shell脚本实战:自动化运维+日志分析+文件管理

别再只会敲命令!Shell脚本实战:自动化运维+日志分析+文件管理

精选文章moguli202025-03-27 12:22:3813A+A-

别再只会敲命令!Shell脚本实战:自动化运维+日志分析+文件管理
--3个核心场景,5个实用脚本,彻底告别重复劳动!

为什么Shell脚本是运维/开发的“效率外挂”?

每天手动重启服务、盯着日志找错误、整理杂乱文件……是不是觉得像“人肉机器人”?
Shell脚本 能自动执行这些重复操作,还能精准处理海量数据!
本文目标

解决 自动化运维日志分析文件管理 三大高频痛点

直接复制代码,立刻应用到实际工作

学会用Shell替代90%的重复命令

一、自动化运维:让系统自己“打工”

1. 自动重启崩溃服务(守护进程神器)

需求:监控Nginx服务,意外停止时自动重启并记录日志。

bash
#!/bin/bash
# monitor_nginx.sh
SERVICE="nginx"
LOG="/var/log/nginx_monitor.log"

while true; do
    if ! systemctl is-active --quiet $SERVICE; then
        echo "$(date): $SERVICE 已停止,尝试重启..." >> $LOG
        systemctl restart $SERVICE
        echo "$(date): 重启完成" >> $LOG
    fi
    sleep 60  # 每分钟检查一次
done

2. 批量检查服务器存活(运维必备)

需求:检测10台服务器是否在线,失败时标记红色。

bash
#!/bin/bash
# check_servers.sh
SERVERS=("192.168.1.101" "192.168.1.102")  # 替换为你的服务器IP
for ip in "${SERVERS[@]}"; do
    if ping -c 1 $ip &> /dev/null; then
        echo -e "\033[32m$ip 在线\033[0m"
    else
        echo -e "\033[31m$ip 离线\033[0m"
    fi
done

二、日志分析:从海量数据中挖出关键信息

3. 实时监控错误日志(秒级报警)

需求:实时扫描日志文件,发现ERROR关键词立即发送邮件。

bash
#!/bin/bash
# log_monitor.sh
LOG_FILE="/var/log/app.log"
EMAIL="admin@example.com"

tail -f $LOG_FILE | while read line; do
    if echo $line | grep -q "ERROR"; then
        echo "发现错误日志:$line" | mail -s "紧急报警!" $EMAIL
    fi
done

4. 统计网站访问高峰时段(数据分析神技)

需求:分析Apache日志,找出访问量最大的时间段。

bash
#!/bin/bash
# traffic_analysis.sh
LOG_FILE="/var/log/apache2/access.log"

awk '{print $4}' $LOG_FILE | cut -d: -f2 | sort | uniq -c | sort -nr | head -n 5

三、文件管理:把杂乱文件夹变成“有序仓库”

5. 自动分类文件(按类型归档)

需求:将下载目录中的文件按类型分类到对应文件夹(文档、图片、压缩包)。

bash
#!/bin/bash
# auto_sort.sh
SOURCE="$HOME/Downloads"
DOC_DIR="$SOURCE/Documents"
IMG_DIR="$SOURCE/Images"
ARCHIVE_DIR="$SOURCE/Archives"

mkdir -p $DOC_DIR $IMG_DIR $ARCHIVE_DIR

for file in $SOURCE/*; do
    ext=${file##*.}
    case $ext in
        doc|pdf|txt) mv "$file" $DOC_DIR ;;
        jpg|png|gif) mv "$file" $IMG_DIR ;;
        zip|tar|gz) mv "$file" $ARCHIVE_DIR ;;
    esac
done

四、进阶技巧:让脚本更强大

  1. 参数化脚本:让用户自定义路径和阈值

bash

# 示例:通过参数指定监控目录 #!/bin/bash DIR=${1:-/tmp} # 如果未传参,默认使用/tmp find $DIR -type f -mtime +7 -delete

  1. 定时任务:用crontab定时执行脚本

bash

crontab -e # 每天凌晨2点清理临时文件 0 2 * * * /path/to/clean_temp.sh

  1. 日志轮转:防止日志文件过大

bash

# 使用logrotate配置每日切割日志 /var/log/app.log { daily rotate 7 compress missingok }

五、今日行动清单

复制auto_sort.sh脚本,整理你的下载文件夹!
用log_monitor.sh监控一个测试日志文件(如tail -f test.log)。
在评论区分享你最想解决的自动化难题(如自动备份数据库、定时群发邮件等)!

记住:Shell脚本是“懒人”的超能力!
无论是运维工程师、开发还是学生,掌握它能让你效率翻倍!
关注我,带你解锁更多编程硬核技能!

代码即生产力,让重复劳动成为历史!

点击这里复制本文地址 以上内容由莫古技术网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

莫古技术网 © All Rights Reserved.  滇ICP备2024046894号-2