Skip to main content

绝招 !!! 20式运维秘笈在日常运维工作中,Shell脚本是不可或缺的强大工具

  1. 绝招 !!! 20式运维秘笈

    在日常运维工作中,Shell脚本是不可或缺的强大工具。通过编写和使用Shell脚本,运维人员可以实现任务的自动化,提高工作效率,减少人为错误。


    1. 检查磁盘空间
    #!/bin/bash
    # 检查磁盘空间,如果根分区使用率超过80%,则发送警告邮件
    THRESHOLD=80
    EMAIL="[email protected]"
    df -h | grep -q "/dev/root"
    if [ $? -eq 0 ]; then
    USAGE=$(df -h | grep "/dev/root" | awk '{ print $5 }' | sed 's/%//g')
    if [ $USAGE -ge $THRESHOLD ]; then
    echo "警告:根分区使用率已达 $USAGE%" | mail -s "磁盘空间警告" $EMAIL
    fi
    fi
    


    2. 监控内存使用
    #!/bin/bash
    # 监控内存使用率,如果超过80%,则记录到日志文件
    THRESHOLD=80
    MEM_USAGE=$(free -m | awk 'NR==2{printf "%.2f", $3*100/$2 }')
    if [ $MEM_USAGE -ge $THRESHOLD ]; then
    echo "$(date): 内存使用率已达 $MEM_USAGE%" >> /var/log/mem_usage.log
    fi
    


    3. 服务状态检查
    #!/bin/bash
    # 检查nginx服务是否运行,如果未运行则尝试重启
    SERVICE="nginx"
    if ! systemctl is-active --quiet $SERVICE; then
    echo "$SERVICE 服务未运行,尝试重启..."
    systemctl restart $SERVICE
    fi
    


    4. 清理旧日志文件
    #!/bin/bash
    # 清理/var/log目录下超过7天的日志文件
    find /var/log -type f -mtime +7 -exec rm -f {} \;
    


    5. MySQL数据库备份
    #!/bin/bash
    # 每天备份MySQL数据库
    BACKUP_DIR="/path/to/backup"
    DATE=$(date +%F)
    mysqldump -u root -p'yourpassword' yourdatabase > $BACKUP_DIR/yourdatabase_$DATE.sql
    


    6. 重启资源消耗过高的进程
    #!/bin/bash
    # 重启CPU使用率超过80%的进程
    CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
    if [ $CPU_USAGE -gt 80 ]; then
    echo "系统负载过高,重启系统..."
    reboot
    fi
    


    7. 检查端口开放状态
    #!/bin/bash
    # 检查指定端口是否开放
    PORT=$1
    if netstat -tuln | grep $PORT; then
    echo "端口 $PORT 已开放"
    else
    echo "端口 $PORT 未开放"
    fi
    


    8. 同步文件到备份服务器
    #!/bin/bash
    # 使用rsync同步文件到备份服务器
    rsync -avz /path/to/source user@backupserver:/path/to/destination
    


    9. 系统资源监控
    #!/bin/bash
    # 监控并报告CPU和内存使用情况
    while true; do
    echo "CPU: $(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')%"
    echo "MEM: $(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2 }')"
    sleep 60
    done
    


    10. 检查磁盘I/O
    #!/bin/bash
    # 监控磁盘I/O,如果超过阈值,则发送警告
    IO_WAIT=$(iostat -dx /dev/sda | awk 'NR==4{print $4+$5}')
    if [ $IO_WAIT -gt 60 ]; then
    echo "警告:磁盘I/O等待时间超过60%" | mail -s "磁盘I/O警告" [email protected]
    fi
    

    当然,这里是另外10个实用的运维Shell脚本:

    11. 检查磁盘空间并清理
    #!/bin/bash
    # 检查磁盘空间,如果使用率超过90%,则清理/tmp目录下的文件
    THRESHOLD=90
    if [ $(df / | awk 'NR==2{print $5}' | sed 's/%//g') -ge $THRESHOLD ]; then
    echo "磁盘空间使用率超过$THRESHOLD%,开始清理/tmp目录..."
    find /tmp -type f -delete
    fi
    


    12. 监控特定服务状态
    #!/bin/bash
    # 监控特定服务状态,如果服务未运行,则尝试重启
    SERVICE="httpd"
    if ! systemctl is-active --quiet $SERVICE; then
    echo "$SERVICE 服务未运行,尝试重启..."
    systemctl start $SERVICE
    fi
    


    13. 备份配置文件
    #!/bin/bash
    # 备份/etc/目录下的配置文件到/backup/
    DATE=$(date +%Y%m%d)
    tar -czf /backup/config_backup_$DATE.tar.gz /etc/
    


    14. 检查系统日志错误
    #!/bin/bash
    # 检查系统日志中的错误信息
    grep -i "error" /var/log/syslog | mail -s "系统日志错误" [email protected]
    


    15. 检查系统运行时间
    #!/bin/bash
    # 检查系统运行时间,如果超过7天,则发送警告邮件
    DAYS=$(uptime -s | awk -F' ' '{print ($1+0)}')
    if [ $DAYS -gt 7 ]; then
    echo "系统已运行超过7天" | mail -s "系统运行时间警告" [email protected]
    fi
    


    16. 重启网络服务
    #!/bin/bash
    # 重启网络服务
    service network restart
    


    17. 检查磁盘I/O等待时间
    #!/bin/bash
    # 检查磁盘I/O等待时间,如果超过50%,则发送警告
    IO_WAIT=$(iostat /dev/sda 1 2 | tail -1 | awk '{print $4+$5}')
    if [ $IO_WAIT -gt 50 ]; then
    echo "磁盘I/O等待时间超过50%" | mail -s "磁盘I/O警告" [email protected]
    fi
    


    18. 检查系统端口开放状态
    #!/bin/bash
    # 检查系统端口开放状态,如果指定端口未开放,则发送警告
    PORT=$1
    if ! netstat -tuln | grep $PORT; then
    echo "端口$PORT未开放" | mail -s "端口开放状态警告" [email protected]
    fi
    


    19. 文件同步
    #!/bin/bash
    rsync -avz /src/ /dst/
    echo "/src/ to /dst/"
    


    20.比较两个目录的内容
    #!/bin/bash
    
    diff -rq /dir1 /dir2
    

    近期文章:
    运维封了这30端口,黑客哭了 !!!
    要被优化 !!! 一个人运维了1000台服务器之后
    19500 Star开源 ! 6步部署6000万用户的网站
    5200 Star开源 ! 6步安装MarkDown协作神器
    1400 Star开源 !!! 只要5步安装书签神器

    via 开源日记
👀 open eyes to see the world. 丨 site views: -