Skip to content

Commit 22b9fe3

Browse files
committed
fix(action): 按服务退出码反馈真实结果,停止失败时如实上报
- action.sh: 启动/停止改为依据 service.sh 退出码分支, 失败时显示"启动失败/停止失败",不再固定打印成功横幅 - service.sh: do_stop 在 SIGKILL 后增加回收等待与终检, 进程仍存活时记录错误并返回非零,使停止失败可被上报
1 parent 51d17f1 commit 22b9fe3

2 files changed

Lines changed: 28 additions & 9 deletions

File tree

src/module/action.sh

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,29 @@ echo "==================================="
3131
echo " NetProxy 模块操作 "
3232
echo "==================================="
3333

34-
# 运行中则停止,未运行则启动
34+
# 运行中则停止,未运行则启动;按子脚本退出码反馈真实结果
3535
if is_sing_box_running; then
3636
log "INFO" "检测到 sing-box 正在运行,准备执行停止操作..."
37-
sh "$SERVICE_SCRIPT" stop
38-
echo "==================================="
39-
echo " 操作结果: NetProxy 服务已停止"
40-
echo "==================================="
37+
if sh "$SERVICE_SCRIPT" stop; then
38+
echo "==================================="
39+
echo " 操作结果: NetProxy 服务已停止"
40+
echo "==================================="
41+
else
42+
echo "==================================="
43+
echo " 操作结果: NetProxy 服务停止失败"
44+
echo "==================================="
45+
fi
4146
else
4247
log "INFO" "检测到 sing-box 未运行,准备执行启动操作..."
43-
sh "$SERVICE_SCRIPT" start
44-
echo "==================================="
45-
echo " 操作结果: NetProxy 服务已启动"
46-
echo "==================================="
48+
if sh "$SERVICE_SCRIPT" start; then
49+
echo "==================================="
50+
echo " 操作结果: NetProxy 服务已启动"
51+
echo "==================================="
52+
else
53+
echo "==================================="
54+
echo " 操作结果: NetProxy 服务启动失败"
55+
echo "==================================="
56+
fi
4757
fi
4858

4959
# 短暂停留,确保日志完整显示后再退出

src/module/scripts/core/service.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,18 @@ do_stop() {
190190
if kill -0 "$pid" 2> /dev/null; then
191191
log "WARN" "进程未响应 SIGTERM,改用 SIGKILL"
192192
kill -9 "$pid" 2> /dev/null || true
193+
# 给 SIGKILL 留出回收时间
194+
sleep 1
193195
fi
194196
fi
195197

198+
# 最终确认进程是否已退出,未退出则视为停止失败
199+
if kill -0 "$pid" 2> /dev/null; then
200+
log "ERROR" "sing-box 进程仍在运行 (PID: $pid),停止失败"
201+
log "INFO" "========== sing-box 服务停止完成 =========="
202+
return 1
203+
fi
204+
196205
cleanup_runtime_files
197206
log "INFO" "sing-box 进程已停止"
198207
log "INFO" "========== sing-box 服务停止完成 =========="

0 commit comments

Comments
 (0)