@@ -23,6 +23,7 @@ readonly RUNTIME_DIR="$SINGBOX_DIR/runtime" # 运行时生成目录
2323readonly SWITCH_SCRIPT=" $MODDIR /scripts/core/switch.sh" # 模式/节点切换脚本
2424readonly TPROXY_SCRIPT=" $MODDIR /scripts/network/tproxy.sh" # 透明代理脚本
2525readonly KILL_TIMEOUT=5 # 等待进程退出的秒数上限
26+ readonly LOG_TAG=" service" # 日志组件标签
2627
2728. " $MODDIR /scripts/utils/common.sh"
2829. " $MODDIR /scripts/utils/config.sh"
@@ -77,9 +78,9 @@ do_start() {
7778 local node_path
7879
7980 if [ " $skip_tproxy " = " 1" ]; then
80- log " INFO " " ========== 开始启动 sing-box 核心服务 (跳过 tproxy) ========== "
81+ log " DEBUG " " 启动 sing-box 核心服务 (跳过 tproxy)"
8182 else
82- log " INFO" " ========== 开始启动 sing-box 服务 ========== "
83+ log " INFO" " 启动 sing-box 服务"
8384 fi
8485 verify_environment
8586
@@ -98,10 +99,8 @@ do_start() {
9899
99100 [ " $RUNTIME_NODE_COUNT " -gt 0 ] || die " 当前节点目录没有可加载的节点配置: $CUR_OUTBOUND_DIR "
100101
101- log " INFO" " 当前节点目录: $CUR_OUTBOUND_DIR "
102- log " INFO" " 路由模式: $CUR_OUTBOUND_MODE "
103- log " INFO" " 选择模式: $CUR_SELECTOR_MODE "
104- log " INFO" " 已加载节点: $RUNTIME_NODE_COUNT ,跳过无效节点: $RUNTIME_SKIPPED_COUNT "
102+ # 节点与模式概要 (单行)
103+ log " INFO" " 节点目录=$CUR_OUTBOUND_DIR 模式=$CUR_OUTBOUND_MODE 选择=$CUR_SELECTOR_MODE 已加载=$RUNTIME_NODE_COUNT 跳过=$RUNTIME_SKIPPED_COUNT "
105104
106105 # 构造启动参数:先基础参数,再逐个追加节点配置,最后追加运行时出站
107106 set -- run -C " $CONFDIR "
114113 set -- " $@ " -c " $runtime_outbounds "
115114
116115 # 以 root:net_admin 身份后台启动进程
117- log " INFO " " 正在启动 sing-box 进程..."
116+ log " DEBUG " " 正在启动 sing-box 进程..."
118117 cd " $SINGBOX_DIR " || die " 无法进入配置目录: $SINGBOX_DIR "
119118 nohup " $BUSYBOX " setuidgid root:net_admin " $SING_BOX_BIN " " $@ " > " $SINGBOX_LOG_FILE " 2>&1 &
120119
@@ -128,21 +127,21 @@ EOF
128127 die " sing-box 启动失败,请检查日志: $SINGBOX_LOG_FILE "
129128 fi
130129
131- # 等待控制接口就绪后同步运行模式
130+ # 等待控制接口就绪后同步运行模式 (内部同步步骤静默)
132131 api_wait_available 60 1 || die " 控制接口不可用,启动失败"
133- LOG_STDERR=0 SWITCH_ALLOW_RESTART=0 sh " $SWITCH_SCRIPT " mode " $CUR_OUTBOUND_MODE " || die " 运行模式同步失败,启动中止"
132+ LOG_STDERR=0 LOG_LEVEL=WARN SWITCH_ALLOW_RESTART=0 sh " $SWITCH_SCRIPT " mode " $CUR_OUTBOUND_MODE " || die " 运行模式同步失败,启动中止"
134133 # 手动选择模式下额外同步当前节点
135134 if [ " $CUR_SELECTOR_MODE " = " manual" ] || [ " $CUR_SELECTOR_MODE " = " selector" ] || [ " $CUR_SELECTOR_MODE " = " 手动选择" ] || [ " $CUR_SELECTOR_MODE " = " 手动" ]; then
136- LOG_STDERR=0 SWITCH_ALLOW_RESTART=0 sh " $SWITCH_SCRIPT " config " $CUR_OUTBOUND_CONFIG " || die " 节点配置同步失败,启动中止"
135+ LOG_STDERR=0 LOG_LEVEL=WARN SWITCH_ALLOW_RESTART=0 sh " $SWITCH_SCRIPT " config " $CUR_OUTBOUND_CONFIG " || die " 节点配置同步失败,启动中止"
137136 fi
138137
139138 # 非跳过模式下加载透明代理规则
140139 if [ " $skip_tproxy " != " 1" ]; then
141- log " INFO " " 正在加载透明代理规则..."
140+ log " DEBUG " " 正在加载透明代理规则..."
142141 " $TPROXY_SCRIPT " start -d " $TPROXY_CONF_DIR " >> " $LOG_FILE " 2>&1 || die " 透明代理规则加载失败"
143142 fi
144143
145- log " INFO" " ========== sing-box 服务启动完成 ========== "
144+ log " INFO" " sing-box 服务启动完成"
146145}
147146
148147# ######################################
@@ -156,28 +155,27 @@ do_stop() {
156155 local pid count
157156
158157 if [ " $skip_tproxy " = " 1" ]; then
159- log " INFO " " ========== 开始停止 sing-box 核心服务 (跳过 tproxy) ========== "
158+ log " DEBUG " " 停止 sing-box 核心服务 (跳过 tproxy)"
160159 else
161- log " INFO" " ========== 开始停止 sing-box 服务 ========== "
160+ log " INFO" " 停止 sing-box 服务"
162161 fi
163162 verify_environment
164163
165164 # 先清理透明代理规则 (非跳过模式)
166165 if [ " $skip_tproxy " != " 1" ]; then
167- log " INFO " " 正在清理透明代理规则..."
166+ log " DEBUG " " 正在清理透明代理规则..."
168167 " $TPROXY_SCRIPT " stop -d " $TPROXY_CONF_DIR " >> " $LOG_FILE " 2>&1 || true
169168 fi
170169
171170 # 进程不存在则清理运行时文件后返回,保证幂等
172171 pid=" $( get_pid " $SING_BOX_BIN " ) "
173172 if [ -z " $pid " ]; then
174- log " INFO " " 未发现运行中的 sing-box 进程"
173+ log " DEBUG " " 未发现运行中的 sing-box 进程"
175174 cleanup_runtime_files
176- log " INFO" " ========== sing-box 服务停止完成 =========="
177175 return 0
178176 fi
179177
180- log " INFO " " 正在停止 sing-box 进程 (PID: $pid )..."
178+ log " DEBUG " " 正在停止 sing-box 进程 (PID: $pid )..."
181179
182180 # 先发送 SIGTERM,超时未退出再强制 SIGKILL
183181 if kill " $pid " 2> /dev/null; then
@@ -198,13 +196,11 @@ do_stop() {
198196 # 最终确认进程是否已退出,未退出则视为停止失败
199197 if kill -0 " $pid " 2> /dev/null; then
200198 log " ERROR" " sing-box 进程仍在运行 (PID: $pid ),停止失败"
201- log " INFO" " ========== sing-box 服务停止完成 =========="
202199 return 1
203200 fi
204201
205202 cleanup_runtime_files
206- log " INFO" " sing-box 进程已停止"
207- log " INFO" " ========== sing-box 服务停止完成 =========="
203+ log " INFO" " sing-box 服务已停止"
208204}
209205
210206# ######################################
@@ -220,9 +216,9 @@ do_restart() {
220216 # core 模式仅重启核心进程
221217 if [ " $target " = " core" ]; then
222218 skip_tproxy=1
223- log " INFO " " ========== 开始重启 sing-box 核心服务 (跳过 tproxy) ========== "
219+ log " DEBUG " " 重启 sing-box 核心服务 (跳过 tproxy)"
224220 else
225- log " INFO" " ========== 开始重启 sing-box 服务 ========== "
221+ log " INFO" " 重启 sing-box 服务"
226222 fi
227223
228224 do_stop " $skip_tproxy "
0 commit comments