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

Linux常用脚本100例81-100|助你快速了解Linux系统命令
  1. 监控特定进程的 CPU 使用率并发送警告邮件
    #!/bin/bash
    echo "监控特定进程的 CPU 使用率并发送警告邮件:"
    high_cpu_process=$(top -bn1 | grep -v grep | awk '{print $1, $9}' | sort -k 2 -nr | head -n 1)
    if [[ $(echo $high_cpu_process | awk '{print $2}') -gt 50 ]]; then
      echo "进程 $(echo $high_cpu_process | awk '{print $1}') CPU 使用率超过50%" | mail -s "高 CPU 使用率警告" user@example.com
    fi
    
  2. 自动创建每周备份计划
    #!/bin/bash
    echo "自动创建每周备份计划:"
    tar -czvf /path/to/backup/weekly-$(date +%Y%m%d).tar.gz /path/to/data
    
  3. 监控系统安全更新
    #!/bin/bash
    echo "监控系统安全更新:"
    apt list --upgradable | grep "security"
    if [ $? -eq 0 ]; then
      echo "有安全更新可用,请尽快更新" | mail -s "安全更新警告" user@example.com
    fi
    
  4. 自动清理旧的内核版本
    #!/bin/bash
    echo "自动清理旧的内核版本:"
    latest_kernel=$(uname -r)
    dpkg --list 'Linux-image-*' | awk '{ print $2 }' | grep -v $latest_kernel | xargs apt-get -y purge
    
  5. 监控网络连接状态并尝试重新连接
    #!/bin/bash
    echo "监控网络连接状态并尝试重新连接:"
    if ! ping -c 1 google.com &>/dev/null; then
      echo "网络连接失败,尝试重新连接..."
      ifdown eth0 && ifup eth0
    fi
    
  6. 自动同步多个时间服务器
    #!/bin/bash
    echo "自动同步多个时间服务器:"
    ntpdate pool.ntp.org
    ntpdate time.google.com
    ntpdate time.windows.com
    
  7. 监控系统磁盘空间并自动扩展磁盘
    #!/bin/bash
    echo "监控系统磁盘空间并自动扩展磁盘:"
    if [ $(df -h | grep '/' | awk '{ print $5 }' | sed 's/%//g' | sort -nr | head -n 1) -gt 95 ]; then
      echo "磁盘空间不足,尝试扩展磁盘..."
      # 这里可以添加扩展磁盘的命令或脚本
    fi
    
  8. 自动检测和阻止 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 暴力破解攻击,封锁 IP..."
      # 这里可以添加封锁 IP 的命令或脚本
    fi
    
  9. 监控系统性能并生成报告
    #!/bin/bash
    echo "监控系统性能并生成报告:"
    sar -u 5 3 > /tmp/sar_report
    mail -s "系统性能报告" user@example.com < /tmp/sar_report
    
  10. 自动更新系统并清理未使用的依赖
    #!/bin/bash
    echo "自动更新系统并清理未使用的依赖:"
    apt-get update && apt-get upgrade -y
    apt-get autoremove -y
    
    1. 监控系统日志并自动重启服务
      #!/bin/bash
      echo "监控系统日志并自动重启服务:"
      if grep -q "Error" /var/log/syslog; then
        echo "检测到系统错误,正在重启服务..."
        systemctl restart service_name
      fi
      
    2. 自动检测僵尸进程并杀死
      #!/bin/bash
      echo "自动检测僵尸进程并杀死:"
      ps aux | awk '{if ($8 ~ /Z/) print $2}' | xargs kill -9
      
    3. 监控系统内存泄漏并发送警告邮件
      #!/bin/bash
      echo "监控系统内存泄漏并发送警告邮件:"
      mem_usage=$(free -m | awk '/Mem:/ {print $3/$2 * 100.0}')
      if [ $mem_usage -gt 90 ]; then
        echo "内存使用率超过90%,可能存在内存泄漏" | mail -s "内存泄漏警告" user@example.com
      fi
      
    4. 自动备份数据库并清理旧备份
      #!/bin/bash
      echo "自动备份数据库并清理旧备份:"
      pg_dump -U username -F c -b -v -f /path/to/backup/$(date +%Y%m%d%H%M%S).dump database_name
      find /path/to/backup -name "*.dump" -mtime +7 -exec rm {} ;
      
    5. 监控网络流量并限制高流量用户
      #!/bin/bash
      echo "监控网络流量并限制高流量用户:"
      if [ $(nethogs eth0 | head -n 1 | awk '{print $2}') -gt 10000 ]; then
        echo "检测到高流量用户,限制其网络速度..."
        # 这里可以添加限制网络速度的命令或脚本
      fi
      
    6. 自动检测系统漏洞并修复
      #!/bin/bash
      echo "自动检测系统漏洞并修复:"
      unattended-upgrades --dry-run -v
      if [ $? -eq 0 ]; then
        unattended-upgrades -v
      fi
      
    7. 监控系统性能并调整资源分配
      #!/bin/bash
      echo "监控系统性能并调整资源分配:"
      cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
      if [ $cpu_usage -gt 80 ]; then
        echo "CPU 使用率超过80%,调整资源分配..."
        # 这里可以添加调整资源分配的命令或脚本
      fi
      
    8. 自动检测未授权访问并封锁 IP
      #!/bin/bash
      echo "自动检测未授权访问并封锁 IP:"
      if grep -q "Failed password" /var/log/auth.log; then
        echo "检测到未授权访问,封锁 IP..."
        # 这里可以添加封锁 IP 的命令或脚本
      fi
      
    9. 监控系统服务状态并发送状态报告
      #!/bin/bash
      echo "监控系统服务状态并发送状态报告:"
      service_status=$(systemctl is-active service_name)
      echo "服务状态:$service_status" | mail -s "服务状态报告" user@example.com
      
    10. 自动检测系统资源瓶颈并优化


    #!/bin/bash
    echo "自动检测系统资源瓶颈并优化:"
    io_wait=$(vmstat 1 2 | awk '/iowait/ {print $13}')
    if [ $io_wait -gt 50 ]; then
      echo "I/O 等待时间超过50%,优化系统资源..."
      # 这里可以添加优化系统资源的命令或脚本
    fi
阅读剩余