Linux常用脚本100例46-80|助你快速了解Linux系统命令

Linux常用脚本100例26-80|助你快速了解Linux系统命令

  1. 检查磁盘空间并清理旧内核
    #!/bin/bash
    echo "检查磁盘空间并清理旧内核:"
    disk_usage=$(df -h | grep '/' | awk '{ print $5 }')
    if [[ $disk_usage == *"100%"* ]]; then
      echo "磁盘空间已满,正在清理旧内核..."
      sudo apt autoremove --purge -y
      sudo apt clean
    fi
    
  2. 监控系统负载并重启
    #!/bin/bash
    echo "监控系统负载并重启:"
    load=$(uptime | grep -ohe 'load average[s:][: ].*' | awk '{ print $3 }')
    if [[ $load -gt 10 ]]; then
      echo "系统负载过高,正在重启..."
      sudo reboot
    fi
    
  3. 检查和修复文件系统(ext4)
    #!/bin/bash
    echo "检查和修复文件系统(ext4):"
    sudo e2fsck -f /dev/sda1
    
  4. 监控网络流量
    #!/bin/bash
    echo "监控网络流量:"
    nload
    
  5. 自动更新系统并重启
    #!/bin/bash
    echo "自动更新系统并重启:"
    sudo apt update && sudo apt upgrade -y
    sudo reboot
    
  6. 监控磁盘 I/O
    #!/bin/bash
    echo "监控磁盘I/O:"
    iostat -dx /dev/sda
    
  7. 检查和修复 MySQL 数据库
    #!/bin/bash
    echo "检查和修复MySQL数据库:"
    mysqlcheck -u root -p --auto-repair --all-databases
    
  8. 监控内存泄漏
    #!/bin/bash
    echo "监控内存泄漏:"
    while true; do
      mem_usage=$(free -m | awk '/Mem:/ { print $3/$2 * 100.0 }')
      echo "当前内存使用率:$mem_usage%"
      sleep 60
    done
    
  9. 自动备份 PostgreSQL 数据库
    #!/bin/bash
    echo "自动备份 PostgreSQL 数据库:"
    pg_dump -U username -F c -b -v -f /path/to/backup.dump database_name
    
  10. 监控系统资源使用情况
    #!/bin/bash
    echo "监控系统资源使用情况:"
    top -b -n 1
    
  11. 检查系统是否受到 SSH 暴力破解攻击
    #!/bin/bash
    echo "检查系统是否受到 SSH 暴力破解攻击:"
    failed_logins=$(grep -i "Failed password" /var/log/auth.log | grep -v -i "sshd" | awk '{ print $9 }' | sort | uniq -c | sort -nr | head -n 1)
    if [[ $failed_logins -gt 5 ]]; then
      echo "检测到 SSH 暴力破解攻击"
    fi
    
  12. 自动清理临时文件
    #!/bin/bash
    echo "自动清理临时文件:"
    sudo find /tmp -type f -atime +7 -delete
    
  13. 监控系统服务状态
    #!/bin/bash
    echo "监控系统服务状态:"
    systemctl list-units --type=service
    
  14. 自动备份 Nginx 配置文件
    #!/bin/bash
    echo "自动备份 Nginx 配置文件:"
    sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.$(date +%Y%m%d%H%M%S)
    
  15. 检查磁盘配额并发送警告邮件
    #!/bin/bash
    echo "检查磁盘配额并发送警告邮件:"
    for user in $(awk '{print $1}' /etc/passwd); do
      if [ $(usermod -U $user | grep -c "User $user may log in") -eq 0 ]; then
        if [ $(df -k /home | grep /home | awk '{print $3}') -lt 500000 ]; then
          echo "用户 $user 的磁盘配额不足" | mail -s "磁盘配额警告" $user
        fi
      fi
    done
    
  16. 监控系统运行时间并重启
    #!/bin/bash
    echo "监控系统运行时间并重启:"
    days=$uptime | awk -F'(up |,)' '{print $2}' | awk '{print $1}'
    if [ "$days" -gt 30 ]; then
      echo "系统运行时间超过30天,正在重启..."
      sudo reboot
    fi
    
  17. 自动清理日志文件
    #!/bin/bash
    echo "自动清理日志文件:"
    find /var/log -name "*.log" -type f -mtime +30 -exec rm {} ;
    
  18. 监控系统端口并发送警告邮件
    #!/bin/bash
    echo "监控系统端口并发送警告邮件:"
    ports=$(netstat -tulnp | grep LISTEN | awk '{print $4}')
    for port in $ports; do
      if [ $port != "80/tcp" ] && [ $port != "443/tcp" ]; then
        echo "检测到非标准端口监听" | mail -s "端口监听警告" user@example.com
      fi
    done
    
  19. 自动同步时间并设置时区
    #!/bin/bash
    echo "自动同步时间并设置时区:"
    sudo timedatectl set-ntp true
    sudo timedatectl set-timezone America/New_York
    
  20. 监控系统资源使用情况并发送警告邮件
    #!/bin/bash
    echo "监控系统资源使用情况并发送警告邮件:"
    high_usage=$(uptime | awk -F'(average: |,)' '{print $2}' | awk '{print $1}')
    if [ "$high_usage" -gt 7 ]; then
      echo "系统负载过高" | mail -s "系统负载警告" user@example.com
    fi
    
  21. 自动备份 MySQL 数据库并清理旧备份
    #!/bin/bash
    echo "自动备份 MySQL 数据库并清理旧备份:"
    mysqldump -u username -p'password' database_name > /path/to/backup/$(date +%Y%m%d%H%M%S).sql
    find /path/to/backup -name "*.sql" -mtime +7 -exec rm {} ;
    
  22. 监控系统服务状态并重启服务
    #!/bin/bash
    echo "监控系统服务状态并重启服务:"
    service_status=$(systemctl is-active service_name)
    if [ "$service_status" != "active" ]; then
      echo "服务未运行,正在重启..."
      systemctl restart service_name
    fi
    
  23. 自动清理缓存文件
    #!/bin/bash
    echo "自动清理缓存文件:"
    find /tmp -type f -name "*.cache" -exec rm {} ;
    
  24. 监控系统磁盘 I/O 并发送警告邮件
    #!/bin/bash
    echo "监控系统磁盘I/O并发送警告邮件:"
    io_usage=$(iostat /dev/sda 1 3 | tail -1 | awk '{print $4+$5}')
    if [ "$io_usage" -gt 90 ]; then
      echo "磁盘I/O过高" | mail -s "磁盘I/O警告" user@example.com
    fi
  25. 监控系统日志并发送警告邮件
    #!/bin/bash
    echo "监控系统日志并发送警告邮件:"
    if grep -q "Error" /var/log/syslog; then
      echo "系统日志中检测到错误" | mail -s "系统日志错误警告" user@example.com
    fi
    1. 监控系统磁盘空间并发送警告邮件
      #!/bin/bash
      echo "监控系统磁盘空间并发送警告邮件:"
      disk_usage=$(df / | awk '/// {print $5}' | sed 's/%//g')
      if [ $disk_usage -ge 90 ]; then
        echo "磁盘空间不足,已达到$disk_usage%" | mail -s "磁盘空间警告" user@example.com
      fi
      
    2. 自动更新软件包并发送更新报告
      #!/bin/bash
      echo "自动更新软件包并发送更新报告:"
      apt-get update > /tmp/update.log 2>&1
      apt-get upgrade -y >> /tmp/update.log 2>&1
      mail -s "软件包更新报告" user@example.com < /tmp/update.log
      
    3. 监控系统运行时间并发送警告邮件
      #!/bin/bash
      echo "监控系统运行时间并发送警告邮件:"
      days=$(cat /proc/uptime | awk '{print $1}' | cut -d. -f1 | cut -d: -f2)
      if [ $days -gt 30 ]; then
        echo "系统已运行超过30天" | mail -s "系统运行时间警告" user@example.com
      fi
      
    4. 自动清理 APT 缓存
      #!/bin/bash
      echo "自动清理 APT 缓存:"
      apt-get clean && apt-get autoclean
      
    5. 监控系统温度并发送警告邮件
      #!/bin/bash
      echo "监控系统温度并发送警告邮件:"
      temp=$(cat /sys/class/thermal/thermal_zone0/temp)
      if [ $temp -gt 75000 ]; then
        echo "系统温度过高,当前温度为$(printf "%.1f" $(awk '{printf "%.1f°C", $1/1000}' temp))°C" | mail -s "系统温度警告" user@example.com
      fi
      
    6. 自动备份配置文件并发送备份报告
      #!/bin/bash
      echo "自动备份配置文件并发送备份报告:"
      tar -czvf /path/to/backup/config-$(date +%Y%m%d%H%M%S).tar.gz /path/to/config
      mail -s "配置文件备份报告" user@example.com < /path/to/backup/config-$(date +%Y%m%d%H%M%S).tar.gz
      
    7. 监控系统内存使用情况并发送警告邮件
      #!/bin/bash
      echo "监控系统内存使用情况并发送警告邮件:"
      mem_usage=$(free -m | awk '/Mem:/ {print $3/$2 * 100.0}')
      if [ $mem_usage -gt 80 ]; then
        echo "内存使用率超过80%" | mail -s "内存使用警告" user@example.com
      fi
      
    8. 自动同步时间并发送同步报告
      #!/bin/bash
      echo "自动同步时间并发送同步报告:"
      ntpdate pool.ntp.org > /tmp/ntp.log 2>&1
      mail -s "时间同步报告" user@example.com < /tmp/ntp.log
      
    9. 监控系统磁盘读写速度并发送报告
      #!/bin/bash
      echo "监控系统磁盘读写速度并发送报告:"
      dd if=/dev/zero of=test bs=1M count=1024
      sync; sync; sync
      dd if=test of=/dev/null bs=1M
      rm -f test
      mail -s "磁盘读写速度报告" user@example.com < /tmp/dd.log
      
    10. 自动监控系统服务状态并发送警告邮件
      #!/bin/bash
      echo "自动监控系统服务状态并发送警告邮件:"
      service_status=$(systemctl is-active service_name)
      if [ "$service_status" != "active" ]; then
        echo "服务未运行" | mail -s "服务状态警告" user@example.com
      fi
      
阅读剩余