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