99 lines
2.5 KiB
Bash
99 lines
2.5 KiB
Bash
#!/bin/bash
|
|
# 3588AdminBackend 启动脚本
|
|
|
|
set -e
|
|
|
|
# 配置
|
|
APP_NAME="managerd"
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
APP_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
BIN_PATH="$APP_DIR/bin/$APP_NAME"
|
|
CONFIG_PATH="$APP_DIR/config/managerd.json"
|
|
LOG_DIR="$APP_DIR/logs"
|
|
PID_FILE="$APP_DIR/$APP_NAME.pid"
|
|
|
|
# 显示信息
|
|
echo "========== 启动 3588AdminBackend =========="
|
|
echo "应用目录: $APP_DIR"
|
|
echo "配置文件: $CONFIG_PATH"
|
|
echo ""
|
|
|
|
# 检查二进制文件
|
|
if [ ! -f "$BIN_PATH" ]; then
|
|
echo "错误: 未找到二进制文件: $BIN_PATH"
|
|
exit 1
|
|
fi
|
|
|
|
# 检查配置文件
|
|
if [ ! -f "$CONFIG_PATH" ]; then
|
|
echo "错误: 配置文件不存在: $CONFIG_PATH"
|
|
echo "请从示例文件创建:"
|
|
echo " cp $APP_DIR/config/managerd.json.example $CONFIG_PATH"
|
|
exit 1
|
|
fi
|
|
|
|
# 验证 JSON 格式
|
|
if ! python3 -m json.tool "$CONFIG_PATH" > /dev/null 2>&1; then
|
|
echo "错误: 配置文件 JSON 格式不正确"
|
|
echo "请检查: $CONFIG_PATH"
|
|
exit 1
|
|
fi
|
|
|
|
# 创建日志目录
|
|
mkdir -p "$LOG_DIR"
|
|
|
|
# 检查是否已在运行
|
|
if [ -f "$PID_FILE" ]; then
|
|
PID=$(cat "$PID_FILE")
|
|
if ps -p "$PID" > /dev/null 2>&1; then
|
|
echo "警告: $APP_NAME 已在运行 (PID: $PID)"
|
|
echo "如需重启,请先执行 stop.sh"
|
|
exit 1
|
|
else
|
|
echo "清理过期的 PID 文件"
|
|
rm -f "$PID_FILE"
|
|
fi
|
|
fi
|
|
|
|
# 启动服务
|
|
echo "正在启动 $APP_NAME..."
|
|
echo "日志文件: $LOG_DIR/$APP_NAME.log"
|
|
|
|
# 使用 nohup 后台运行
|
|
nohup "$BIN_PATH" -config "$CONFIG_PATH" >> "$LOG_DIR/$APP_NAME.log" 2>&1 &
|
|
PID=$!
|
|
echo $PID > "$PID_FILE"
|
|
|
|
# 等待启动
|
|
sleep 2
|
|
if ps -p "$PID" > /dev/null 2>&1; then
|
|
echo ""
|
|
echo "✅ 启动成功!"
|
|
echo " PID: $PID"
|
|
echo " 日志: $LOG_DIR/$APP_NAME.log"
|
|
|
|
# 尝试读取监听地址
|
|
sleep 1
|
|
if command -v ss &> /dev/null; then
|
|
LISTEN_INFO=$(ss -tlnp | grep "$PID" | head -1)
|
|
if [ -n "$LISTEN_INFO" ]; then
|
|
echo " 监听: $(echo "$LISTEN_INFO" | awk '{print $4}')"
|
|
fi
|
|
elif command -v netstat &> /dev/null; then
|
|
LISTEN_INFO=$(netstat -tlnp 2>/dev/null | grep "$PID/" | head -1)
|
|
if [ -n "$LISTEN_INFO" ]; then
|
|
echo " 监听: $(echo "$LISTEN_INFO" | awk '{print $4}')"
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
echo "查看日志: tail -f $LOG_DIR/$APP_NAME.log"
|
|
echo "查看状态: $0 status 或 3588admin-status"
|
|
else
|
|
echo ""
|
|
echo "❌ 启动失败"
|
|
echo "请检查日志: $LOG_DIR/$APP_NAME.log"
|
|
rm -f "$PID_FILE"
|
|
exit 1
|
|
fi
|