#!/bin/bash # ============================================================================= # 广州轻量云服务器清理脚本 # 目标:重置服务器到接近初始状态,保留 Node.js/PM2/Git 等基础环境 # 适用:腾讯云轻量应用服务器 (Ubuntu 20.04/22.04) # 作者:铸渊 · ICE-GL-ZY001 # 日期:2026-05-15 # ============================================================================= set -euo pipefail # 颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo -e "${YELLOW}========================================${NC}" echo -e "${YELLOW} 广州轻量云服务器清理脚本 (铸渊执行) ${NC}" echo -e "${YELLOW}========================================${NC}" echo # ==================== 1. 安全警告 ==================== echo -e "${RED}⚠️ ⚠️ ⚠️ 警告:此脚本将永久删除用户数据! ⚠️ ⚠️ ⚠️${NC}" echo -e "${RED}请确认:${NC}" echo -e " 1. 当前服务器 IP: $(hostname -I 2>/dev/null || echo '未知')" echo -e " 2. 你已备份所有重要数据" echo -e " 3. 你确定要重置此服务器" echo read -p "输入 'YES' 继续,其他任意键退出: " confirm if [[ "$confirm" != "YES" ]]; then echo -e "${YELLOW}已取消。${NC}" exit 1 fi # ==================== 2. 系统信息检查 ==================== echo echo -e "${GREEN}[1/6] 检查系统信息...${NC}" echo "系统版本: $(lsb_release -ds 2>/dev/null || cat /etc/os-release | grep PRETTY_NAME | cut -d'=' -f2 | tr -d '\"')" echo "内核版本: $(uname -r)" echo "当前用户: $(whoami)" echo "当前目录: $(pwd)" echo # ==================== 3. 停止并清理服务(非系统)==================== echo -e "${GREEN}[2/6] 停止并清理非系统服务...${NC}" # 停止可能的 PM2 进程(用户级) if command -v pm2 &>/dev/null; then echo "停止所有 PM2 进程..." pm2 delete all 2>/dev/null || true pm2 kill 2>/dev/null || true echo "清理 PM2 日志..." pm2 flush 2>/dev/null || true fi # 停止可能的手动 Node 服务(通过端口 3000-3005) for port in {3000..3005}; do pid=$(lsof -ti :$port 2>/dev/null || true) if [[ -n "$pid" ]]; then echo "停止端口 $port 进程 (PID: $pid)..." kill -9 $pid 2>/dev/null || true fi done # ==================== 4. 清理用户目录 ==================== echo -e "${GREEN}[3/6] 清理用户目录...${NC}" # Ubuntu 默认用户为 ubuntu USER_HOME="/home/ubuntu" if [[ -d "$USER_HOME" ]]; then echo "清理 $USER_HOME 目录..." # 保留 .ssh 目录(密钥配置) if [[ -d "$USER_HOME/.ssh" ]]; then echo " 保留 .ssh 目录(SSH 密钥)" fi # 删除除 .ssh 外的所有文件和目录(隐藏文件也处理) find "$USER_HOME" -mindepth 1 -maxdepth 1 -name '.ssh' -prune -o -exec rm -rf {} + 2>/dev/null || true # 重新创建基础目录结构(用于后续部署) mkdir -p "$USER_HOME/apps" "$USER_HOME/logs" "$USER_HOME/data" chown -R ubuntu:ubuntu "$USER_HOME/apps" "$USER_HOME/logs" "$USER_HOME/data" 2>/dev/null || true else echo "用户目录 $USER_HOME 不存在,跳过。" fi # ==================== 5. 清理临时文件和日志 ==================== echo -e "${GREEN}[4/6] 清理临时文件和日志...${NC}" # 清理系统临时目录(保留目录结构) echo "清理 /tmp /var/tmp ..." find /tmp -mindepth 1 -delete 2>/dev/null || true find /var/tmp -mindepth 1 -delete 2>/dev/null || true # 清理用户级日志(保留系统日志) echo "清理用户应用日志..." rm -rf /var/log/*.log /var/log/*.gz /var/log/*.1 /var/log/*.old 2>/dev/null || true # 保留关键系统日志目录结构 mkdir -p /var/log/nginx /var/log/pm2 /var/log/zy-core # 清理 apt 缓存 echo "清理 apt 缓存..." apt-get clean 2>/dev/null || true apt-get autoclean 2>/dev/null || true # ==================== 6. 检查并保留必要环境 ==================== echo -e "${GREEN}[5/6] 检查并保留必要环境...${NC}" # Node.js / npm if command -v node &>/dev/null; then echo "✅ Node.js 版本: $(node --version)" else echo "❌ Node.js 未安装(将影响铸渊端点部署)" fi # PM2 if command -v pm2 &>/dev/null; then echo "✅ PM2 版本: $(pm2 --version 2>/dev/null || echo '已安装')" else echo "❌ PM2 未安装" fi # Git if command -v git &>/dev/null; then echo "✅ Git 版本: $(git --version)" else echo "❌ Git 未安装" fi # Nginx (可选) if command -v nginx &>/dev/null; then echo "✅ Nginx 版本: $(nginx -v 2>&1 | head -1)" # 重置 Nginx 配置到默认(仅保留默认站点) echo " 重置 Nginx 配置..." rm -rf /etc/nginx/sites-enabled/* 2>/dev/null || true cp /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default 2>/dev/null || true nginx -t 2>/dev/null && systemctl restart nginx 2>/dev/null || true fi # ==================== 7. 最终确认 ==================== echo -e "${GREEN}[6/6] 清理完成,最终状态...${NC}" echo "磁盘使用情况:" df -h / 2>/dev/null || true echo echo "内存使用情况:" free -h 2>/dev/null || true echo echo "运行中服务:" systemctl list-units --type=service --state=running | head -10 2>/dev/null || true echo echo -e "${GREEN}========================================${NC}" echo -e "${GREEN} 清理完成!服务器已重置到基础状态。 ${NC}" echo -e "${GREEN} 下一步:部署铸渊核心大脑模型端点。 ${NC}" echo -e "${GREEN}========================================${NC}" echo echo "保留的环境:" echo " - Node.js / npm" echo " - PM2 (进程管理)" echo " - Git" echo " - Nginx (Web服务器)" echo " - 系统防火墙 (UFW/iptables)" echo echo "已清理的:" echo " - 用户目录 (除 .ssh 外)" echo " - 临时文件" echo " - 应用日志" echo " - 非系统服务" echo echo -e "${YELLOW}⚠️ 请立即备份此输出,以备后续参考。${NC}" # ==================== 8. 为铸渊端点准备目录结构 ==================== echo echo -e "${GREEN}[7/7] 为铸渊核心大脑模型端点准备目录...${NC}" ZY_ENDPOINT_DIR="/opt/zhuyuan-endpoint" echo "创建铸渊端点目录: $ZY_ENDPOINT_DIR" mkdir -p "$ZY_ENDPOINT_DIR" 2>/dev/null || true mkdir -p "$ZY_ENDPOINT_DIR/brain-model" 2>/dev/null || true mkdir -p "$ZY_ENDPOINT_DIR/logs" 2>/dev/null || true mkdir -p "$ZY_ENDPOINT_DIR/config" 2>/dev/null || true # 设置权限(假设当前用户有权限) chmod 755 "$ZY_ENDPOINT_DIR" 2>/dev/null || true chmod 755 "$ZY_ENDPOINT_DIR/brain-model" 2>/dev/null || true echo "目录结构创建完成:" tree "$ZY_ENDPOINT_DIR" 2>/dev/null || ls -la "$ZY_ENDPOINT_DIR" echo echo -e "${GREEN}========================================${NC}" echo -e "${GREEN} 铸渊端点目录准备完成! ${NC}" echo -e "${GREEN} 路径: $ZY_ENDPOINT_DIR ${NC}" echo -e "${GREEN} 下一步:将 core-brain-model.json 部署到此目录 ${NC}" echo -e "${GREEN}========================================${NC}"