Upload files to "/"
This commit is contained in:
parent
ae66745482
commit
3a3a7ec07b
|
|
@ -0,0 +1,282 @@
|
|||
#!/bin/bash
|
||||
# ============================================================
|
||||
# VPS 优化一键清理脚本
|
||||
# 还原 vps_optimize.sh 所做的所有修改
|
||||
# ============================================================
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
CYAN='\033[0;36m'
|
||||
BOLD='\033[1m'
|
||||
NC='\033[0m'
|
||||
|
||||
info() { echo -e "${CYAN}[INFO]${NC} $1"; }
|
||||
success() { echo -e "${GREEN}[OK]${NC} $1"; }
|
||||
warning() { echo -e "${YELLOW}[!]${NC} $1"; }
|
||||
error() { echo -e "${RED}[ERR]${NC} $1"; exit 1; }
|
||||
step() {
|
||||
echo -e "\n${BOLD}${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||
echo -e "${BOLD}${YELLOW} $1${NC}"
|
||||
echo -e "${BOLD}${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||
}
|
||||
|
||||
RESULTS=()
|
||||
add_result() { RESULTS+=("$1"); }
|
||||
|
||||
check_root() {
|
||||
[[ $EUID -eq 0 ]] || error "请使用 root 用户运行"
|
||||
}
|
||||
|
||||
print_banner() {
|
||||
clear
|
||||
echo -e "${RED}"
|
||||
echo "╔══════════════════════════════════════════════════════╗"
|
||||
echo "║ VPS 优化一键清理脚本 ║"
|
||||
echo "║ 还原 vps_optimize.sh 所做的所有修改 ║"
|
||||
echo "╚══════════════════════════════════════════════════════╝"
|
||||
echo -e "${NC}"
|
||||
echo -e " ${YELLOW}${BOLD}警告: 此操作将还原所有优化配置,请确认后继续${NC}"
|
||||
echo ""
|
||||
read -rp " 确认清理? 输入 yes 继续,其他任意键退出: " confirm
|
||||
[[ "$confirm" == "yes" ]] || { echo "已取消"; exit 0; }
|
||||
}
|
||||
|
||||
# ============================================================
|
||||
# 1. 清理 BBR 和内核参数
|
||||
# ============================================================
|
||||
clean_sysctl() {
|
||||
step "🔧 清理内核参数"
|
||||
|
||||
local files=(
|
||||
"/etc/sysctl.d/99-bbr.conf"
|
||||
"/etc/sysctl.d/99-vps-optimize.conf"
|
||||
)
|
||||
|
||||
for f in "${files[@]}"; do
|
||||
if [[ -f "$f" ]]; then
|
||||
rm -f "$f"
|
||||
success "已删除: $f"
|
||||
else
|
||||
info "不存在,跳过: $f"
|
||||
fi
|
||||
done
|
||||
|
||||
# 重新加载 sysctl(恢复系统默认)
|
||||
sysctl --system >/dev/null 2>&1 || true
|
||||
|
||||
local current
|
||||
current=$(sysctl -n net.ipv4.tcp_congestion_control 2>/dev/null || echo "unknown")
|
||||
info "当前拥塞算法: $current(已恢复系统默认)"
|
||||
|
||||
add_result "✅ 内核参数: 已清理,重启后完全生效"
|
||||
}
|
||||
|
||||
# ============================================================
|
||||
# 2. 清理文件描述符
|
||||
# ============================================================
|
||||
clean_nofile() {
|
||||
step "📁 清理文件描述符"
|
||||
|
||||
local f="/etc/security/limits.d/99-nofile.conf"
|
||||
if [[ -f "$f" ]]; then
|
||||
rm -f "$f"
|
||||
success "已删除: $f"
|
||||
else
|
||||
info "不存在,跳过: $f"
|
||||
fi
|
||||
|
||||
# 清理 systemd override
|
||||
for svc in sing-box nginx xray; do
|
||||
local d="/etc/systemd/system/${svc}.service.d/limits.conf"
|
||||
if [[ -f "$d" ]]; then
|
||||
rm -f "$d"
|
||||
# 如果目录空了也删掉
|
||||
rmdir "/etc/systemd/system/${svc}.service.d" 2>/dev/null || true
|
||||
success "已删除 systemd override: ${svc}"
|
||||
fi
|
||||
done
|
||||
|
||||
systemctl daemon-reload 2>/dev/null || true
|
||||
add_result "✅ 文件描述符: 已恢复系统默认"
|
||||
}
|
||||
|
||||
# ============================================================
|
||||
# 3. 清理 Nginx 相关
|
||||
# ============================================================
|
||||
clean_nginx() {
|
||||
step "🌐 清理 Nginx 配置"
|
||||
|
||||
# 删除全局 snippet(如果残留)
|
||||
if [[ -f /etc/nginx/conf.d/99-optimize.conf ]]; then
|
||||
rm -f /etc/nginx/conf.d/99-optimize.conf
|
||||
success "已删除: /etc/nginx/conf.d/99-optimize.conf"
|
||||
else
|
||||
info "99-optimize.conf 不存在,跳过"
|
||||
fi
|
||||
|
||||
# 还原 nginx 站点配置(从备份恢复)
|
||||
local nginx_conf
|
||||
nginx_conf=$(grep -rl "proxy_pass" /etc/nginx/sites-available/ 2>/dev/null | head -1 || true)
|
||||
|
||||
if [[ -n "$nginx_conf" ]]; then
|
||||
# 找最新的备份
|
||||
local latest_bak
|
||||
latest_bak=$(ls -t "${nginx_conf}".bak.* 2>/dev/null | head -1 || true)
|
||||
|
||||
if [[ -n "$latest_bak" ]]; then
|
||||
cp "$latest_bak" "$nginx_conf"
|
||||
success "已从备份还原: $latest_bak → $nginx_conf"
|
||||
|
||||
# 删除所有备份
|
||||
rm -f "${nginx_conf}".bak.* 2>/dev/null || true
|
||||
success "已清理备份文件"
|
||||
else
|
||||
warning "未找到备份文件,nginx 站点配置未还原"
|
||||
warning "如需还原请手动处理: $nginx_conf"
|
||||
fi
|
||||
|
||||
# 还原 nginx.conf worker 参数
|
||||
sed -i 's/worker_processes auto/worker_processes 1/' \
|
||||
/etc/nginx/nginx.conf 2>/dev/null || true
|
||||
sed -i '/events\s*{/,/}/{s/worker_connections 65535/worker_connections 768/}' \
|
||||
/etc/nginx/nginx.conf 2>/dev/null || true
|
||||
info "nginx.conf worker 参数已还原"
|
||||
else
|
||||
info "未找到反代配置,跳过"
|
||||
fi
|
||||
|
||||
# 重启 nginx
|
||||
if command -v nginx &>/dev/null; then
|
||||
if nginx -t 2>/dev/null; then
|
||||
systemctl restart nginx 2>/dev/null || true
|
||||
success "nginx 已重启"
|
||||
else
|
||||
warning "nginx 配置测试失败,请手动检查"
|
||||
fi
|
||||
fi
|
||||
|
||||
add_result "✅ Nginx: 已清理并重启"
|
||||
}
|
||||
|
||||
# ============================================================
|
||||
# 4. 清理 CF 白名单 / ufw 规则
|
||||
# ============================================================
|
||||
clean_ufw() {
|
||||
step "🛡️ 清理 Cloudflare IP 白名单"
|
||||
|
||||
if ! command -v ufw &>/dev/null; then
|
||||
info "ufw 未安装,跳过"
|
||||
add_result "⏭️ ufw: 未安装,跳过"
|
||||
return
|
||||
fi
|
||||
|
||||
if ! ufw status 2>/dev/null | grep -q "Status: active"; then
|
||||
info "ufw 未启用,跳过"
|
||||
add_result "⏭️ ufw: 未启用,跳过"
|
||||
return
|
||||
fi
|
||||
|
||||
# 删除所有 CF 相关规则
|
||||
info "删除 CF IP 白名单规则..."
|
||||
local deleted=0
|
||||
while true; do
|
||||
local num
|
||||
num=$(ufw status numbered 2>/dev/null | grep 'CF\|deny-direct' \
|
||||
| grep -oE '^\s*\[[0-9]+\]' | tr -d '[] ' | sort -rn | head -1 || true)
|
||||
[[ -z "$num" ]] && break
|
||||
ufw --force delete "$num" >/dev/null 2>&1 && (( deleted++ )) || break
|
||||
done
|
||||
|
||||
success "已删除 ${deleted} 条 CF/deny-direct 规则"
|
||||
|
||||
# 删除自动更新任务
|
||||
if [[ -f /etc/cron.d/update-cf-whitelist ]]; then
|
||||
rm -f /etc/cron.d/update-cf-whitelist
|
||||
success "已删除 cron 自动更新任务"
|
||||
fi
|
||||
|
||||
if [[ -f /usr/local/bin/update-cf-whitelist.sh ]]; then
|
||||
rm -f /usr/local/bin/update-cf-whitelist.sh
|
||||
success "已删除更新脚本: /usr/local/bin/update-cf-whitelist.sh"
|
||||
fi
|
||||
|
||||
ufw reload >/dev/null 2>&1 || true
|
||||
add_result "✅ CF 白名单: 已清理 ${deleted} 条规则"
|
||||
}
|
||||
|
||||
# ============================================================
|
||||
# 5. 清理 nexttrace(可选)
|
||||
# ============================================================
|
||||
clean_nexttrace() {
|
||||
step "🔍 清理 nexttrace(可选)"
|
||||
|
||||
read -rp " 是否同时删除 nexttrace?(y/N): " input
|
||||
input="${input:-n}"
|
||||
|
||||
if [[ "$input" =~ ^[Yy]$ ]]; then
|
||||
if [[ -f /usr/local/bin/nexttrace ]]; then
|
||||
rm -f /usr/local/bin/nexttrace
|
||||
success "已删除 nexttrace"
|
||||
add_result "✅ nexttrace: 已删除"
|
||||
else
|
||||
info "nexttrace 不存在,跳过"
|
||||
add_result "⏭️ nexttrace: 不存在"
|
||||
fi
|
||||
else
|
||||
info "跳过 nexttrace"
|
||||
add_result "⏭️ nexttrace: 保留"
|
||||
fi
|
||||
}
|
||||
|
||||
# ============================================================
|
||||
# 6. 最终报告
|
||||
# ============================================================
|
||||
print_report() {
|
||||
step "📋 清理完成报告"
|
||||
|
||||
echo ""
|
||||
for r in "${RESULTS[@]}"; do echo -e " $r"; done
|
||||
|
||||
echo ""
|
||||
echo -e " ${BOLD}当前服务状态:${NC}"
|
||||
for svc in nginx sing-box xray; do
|
||||
if systemctl list-unit-files 2>/dev/null | grep -q "^${svc}.service"; then
|
||||
if systemctl is-active --quiet "$svc" 2>/dev/null; then
|
||||
echo -e " ${GREEN}✔${NC} ${svc} 运行中"
|
||||
else
|
||||
echo -e " ${RED}✘${NC} ${svc} 未运行"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo -e " ${BOLD}内核验证:${NC}"
|
||||
echo -e " 拥塞算法 : ${GREEN}$(sysctl -n net.ipv4.tcp_congestion_control 2>/dev/null)${NC}"
|
||||
echo -e " 队列算法 : ${GREEN}$(sysctl -n net.core.default_qdisc 2>/dev/null)${NC}"
|
||||
|
||||
echo ""
|
||||
echo -e " ${BOLD}ufw 状态:${NC}"
|
||||
ufw status 2>/dev/null | grep -v "^$" | sed 's/^/ /' | head -10 || true
|
||||
|
||||
echo ""
|
||||
echo -e " ${YELLOW}${BOLD}建议执行 reboot 使内核参数完全还原${NC}"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# ============================================================
|
||||
# 主流程
|
||||
# ============================================================
|
||||
main() {
|
||||
check_root
|
||||
print_banner
|
||||
clean_sysctl
|
||||
clean_nofile
|
||||
clean_nginx
|
||||
clean_ufw
|
||||
clean_nexttrace
|
||||
print_report
|
||||
}
|
||||
|
||||
main
|
||||
Loading…
Reference in New Issue