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