From c0bc5190d6c148f52715dcce57d499db1b5110eb Mon Sep 17 00:00:00 2001 From: Chaos Date: Thu, 2 Jul 2026 15:21:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=20frpc=20=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=EF=BC=9Asleep=202s=E3=80=81=E8=BE=93=E5=87=BA=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E6=97=A5=E5=BF=97=E5=B0=BE=E9=83=A8=E3=80=81=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=AE=8C=E6=95=B4=E6=80=A7=E9=A2=84=E6=A3=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - sleep 1 -> 2s 给 frpc 更多启动时间 - 启动失败时 tail -5 输出 frpc 日志方便排查 - 增加配置基本校验(检查 serverAddr 和代理端口是否存在) - warn -> error 级别提升 --- ai/hwaishell.sh | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/ai/hwaishell.sh b/ai/hwaishell.sh index 823a6b1..2b9f5bd 100644 --- a/ai/hwaishell.sh +++ b/ai/hwaishell.sh @@ -727,22 +727,31 @@ safe_start_service "huawei-gateway" "$PYTHON_CMD /usr/local/bin/huawei_gateway.p # ================= 启动 frpc ================= if [ -n "$FRPC_CONFIG" ] && [ -f "$FRPC_CONFIG" ]; then if command -v frpc &>/dev/null; then - # 重启已运行的 frpc,或首次启动 - if has_systemd; then - if systemctl list-units --type=service 2>/dev/null | grep -q "frpc"; then - systemctl restart frpc 2>/dev/null && log_info "frpc 服务已重启" - else - systemctl enable frpc --now 2>/dev/null && log_info "frpc 服务已通过 systemd 启动" - fi + # 校验配置基本完整性 + if ! grep -q "serverAddr" "$FRPC_CONFIG" 2>/dev/null || ! grep -q "remotePort\|remote_port" "$FRPC_CONFIG" 2>/dev/null; then + log_error "frpc 配置文件不完整: $FRPC_CONFIG" + log_error "请检查配置后手动启动: frpc -c $FRPC_CONFIG" else - restart_service "frpc" - nohup frpc -c "$FRPC_CONFIG" > /var/log/frpc.log 2>&1 & - echo $! > /var/run/frpc.pid - sleep 1 - if kill -0 "$(cat /var/run/frpc.pid)" 2>/dev/null; then - log_info "frpc 已通过 nohup 启动 (PID: $(cat /var/run/frpc.pid))" + # 重启已运行的 frpc,或首次启动 + if has_systemd; then + if systemctl list-units --type=service 2>/dev/null | grep -q "frpc"; then + systemctl restart frpc 2>/dev/null && log_info "frpc 服务已重启" + else + systemctl enable frpc --now 2>/dev/null && log_info "frpc 服务已通过 systemd 启动" + fi else - log_warn "frpc 启动失败,查看日志: /var/log/frpc.log" + restart_service "frpc" + nohup frpc -c "$FRPC_CONFIG" > /var/log/frpc.log 2>&1 & + echo $! > /var/run/frpc.pid + sleep 2 + if kill -0 "$(cat /var/run/frpc.pid)" 2>/dev/null; then + log_info "frpc 已通过 nohup 启动 (PID: $(cat /var/run/frpc.pid))" + else + log_error "frpc 启动失败!最后几行日志:" + tail -5 /var/log/frpc.log | while IFS= read -r line; do + echo -e " ${RED}|${PLAIN} $line" + done + fi fi fi else