#!/bin/bash # 系统维护脚本 # 每6小时执行一次,执行系统维护任务 echo "🔧 $(date '+%Y-%m-%d %H:%M:%S') - 开始执行系统维护任务" # 更新包索引(仅检查,不实际更新) echo "📦 检查系统包更新..." apt-get update > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "✅ 包索引更新成功" else echo "⚠️ 包索引更新失败" fi # 检查磁盘空间 echo "💾 检查磁盘空间..." DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//') if [ "$DISK_USAGE" -gt 80 ]; then echo "⚠️ 磁盘使用率较高: ${DISK_USAGE}%" # 触发紧急清理 echo "执行紧急清理..." find /tmp -type f -mtime +0 -delete 2>/dev/null find /var/tmp -type f -mtime +0 -delete 2>/dev/null else echo "✅ 磁盘使用率正常: ${DISK_USAGE}%" fi # 检查内存使用 echo "🧠 检查内存使用..." MEM_USAGE=$(free | awk 'NR==2{printf "%.0f", $3*100/$2}') if [ "$MEM_USAGE" -gt 85 ]; then echo "⚠️ 内存使用率较高: ${MEM_USAGE}%" # 清理内存缓存 sync && echo 1 > /proc/sys/vm/drop_caches 2>/dev/null echo "执行内存缓存清理" else echo "✅ 内存使用率正常: ${MEM_USAGE}%" fi # 检查 OpenCode 进程状态 echo "🤖 检查 OpenCode 进程状态..." if pgrep -f "opencode web" > /dev/null; then echo "✅ OpenCode 进程正常运行" else echo "❌ OpenCode 进程未找到" # 这里不自动重启,避免影响服务 fi # 检查 Nginx 进程状态 echo "🌐 检查 Nginx 进程状态..." if pgrep -f "nginx" > /dev/null; then echo "✅ Nginx 进程正常运行" else echo "❌ Nginx 进程未找到" fi # 检查网络连接 echo "🌍 检查网络连接..." if curl -s --max-time 5 http://127.0.0.1:7860/health > /dev/null 2>&1; then echo "✅ 网络连接正常" else echo "⚠️ 网络连接检查失败" fi # 清理旧的进程文件 echo "🧽 清理旧的进程文件..." find /tmp -name "*.pid" -mtime +1 -delete 2>/dev/null find /var/run -name "*.old" -mtime +1 -delete 2>/dev/null # 系统信息汇总 echo "📋 系统信息汇总:" echo " • 磁盘使用: ${DISK_USAGE}%" echo " • 内存使用: ${MEM_USAGE}%" echo " • 系统负载: $(uptime | awk -F'load average:' '{print $2}' | awk '{print $1}' | sed 's/,//')" echo " • 运行时间: $(uptime -p 2>/dev/null || echo '无法获取')" echo "✅ $(date '+%Y-%m-%d %H:%M:%S') - 系统维护任务完成" echo "---"