Update shutdown.sh

This commit is contained in:
wnlen
2026-01-14 16:27:20 +08:00
committed by GitHub
parent dcbde3c69e
commit b58e4aa82c

View File

@ -1,41 +1,47 @@
#!/bin/bash #!/usr/bin/env bash
set -euo pipefail
# 关闭clash服务 # 关闭 clash 服务
Server_Dir=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) Server_Dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
Temp_Dir="$Server_Dir/temp" Temp_Dir="$Server_Dir/temp"
Conf_Dir="$Server_Dir/conf"
PID_FILE="$Temp_Dir/clash.pid" PID_FILE="$Temp_Dir/clash.pid"
# 1) 优先按 PID_FILE 停
if [ -f "$PID_FILE" ]; then if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE") PID="$(cat "$PID_FILE" 2>/dev/null || true)"
if [ -n "$PID" ]; then if [ -n "${PID:-}" ] && kill -0 "$PID" 2>/dev/null; then
kill "$PID" kill "$PID" 2>/dev/null || true
for i in {1..5}; do for _ in {1..5}; do
sleep 1 sleep 1
if ! kill -0 "$PID" 2>/dev/null; then if ! kill -0 "$PID" 2>/dev/null; then
break break
fi fi
done done
if kill -0 "$PID" 2>/dev/null; then if kill -0 "$PID" 2>/dev/null; then
kill -9 "$PID" kill -9 "$PID" 2>/dev/null || true
fi fi
fi fi
rm -f "$PID_FILE" rm -f "$PID_FILE"
else else
PIDS=$(pgrep -f "clash-linux-") # 2) 兜底:按 “-d $Conf_Dir” 特征找(比 clash-linux- 更稳)
if [ -n "$PIDS" ]; then # 说明:你的 start.sh 启动命令形如:<clashbin> -d "$Conf_Dir"
kill $PIDS PIDS="$(pgrep -f " -d ${Conf_Dir}(\s|$)" || true)"
for i in {1..5}; do if [ -n "${PIDS:-}" ]; then
kill $PIDS 2>/dev/null || true
for _ in {1..5}; do
sleep 1 sleep 1
if ! pgrep -f "clash-linux-" >/dev/null; then if ! pgrep -f " -d ${Conf_Dir}(\s|$)" >/dev/null 2>&1; then
break break
fi fi
done done
if pgrep -f "clash-linux-" >/dev/null; then if pgrep -f " -d ${Conf_Dir}(\s|$)" >/dev/null 2>&1; then
kill -9 $PIDS kill -9 $PIDS 2>/dev/null || true
fi fi
fi fi
fi fi
# 清除环境变量 # 3) 清理环境变量文件(删除,而不是置空)
Env_File="${CLASH_ENV_FILE:-}" Env_File="${CLASH_ENV_FILE:-}"
if [ "$Env_File" != "off" ] && [ "$Env_File" != "disabled" ]; then if [ "$Env_File" != "off" ] && [ "$Env_File" != "disabled" ]; then
if [ -z "$Env_File" ]; then if [ -z "$Env_File" ]; then
@ -45,9 +51,10 @@ if [ "$Env_File" != "off" ] && [ "$Env_File" != "disabled" ]; then
Env_File="$Temp_Dir/clash-for-linux.sh" Env_File="$Temp_Dir/clash-for-linux.sh"
fi fi
fi fi
if [ -f "$Env_File" ]; then if [ -f "$Env_File" ]; then
> "$Env_File" rm -f "$Env_File" || true
fi fi
fi fi
echo -e "\n服务关闭成功请执行以下命令关闭系统代理proxy_off\n" echo -e "\n服务关闭成功。若当前终端已开启代理请执行proxy_off\n"