Files
everything-is-suitable/scripts/start-admin-service.sh
T
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

125 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
ADMIN_DIR="$(cd "$(dirname "$0")/.." && pwd)/everything-is-suitable-admin"
PID_FILE="/tmp/admin-service.pid"
LOG_FILE="/tmp/admin-service.log"
PORT=${ADMIN_PORT:-5174}
start_admin() {
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if ps -p "$PID" > /dev/null 2>&1; then
echo "Admin 前端服务已在运行中 (PID: $PID)"
return 0
fi
fi
echo "正在启动 Admin 前端服务 (port: $PORT)..."
cd "$ADMIN_DIR"
if [ ! -d "node_modules" ]; then
echo "安装依赖..."
npm install
fi
nohup npm run dev -- --port "$PORT" > "$LOG_FILE" 2>&1 &
echo $! > "$PID_FILE"
PID=$(cat "$PID_FILE")
echo "等待服务启动..."
MAX_WAIT=60
WAITED=0
while [ $WAITED -lt $MAX_WAIT ]; do
if curl -s "http://localhost:$PORT" > /dev/null 2>&1; then
echo "✅ Admin 前端服务已成功启动 (PID: $PID, Port: $PORT)"
echo "访问地址: http://localhost:$PORT"
echo "日志文件: $LOG_FILE"
return 0
fi
sleep 2
WAITED=$((WAITED + 2))
printf "\r等待中... %d秒 " $WAITED
done
echo ""
echo "❌ Admin 前端服务启动超时"
echo "查看日志: tail -100 $LOG_FILE"
stop_admin
return 1
}
stop_admin() {
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if ps -p "$PID" > /dev/null 2>&1; then
echo "正在停止 Admin 前端服务 (PID: $PID)..."
kill "$PID" 2>/dev/null
sleep 2
if ps -p "$PID" > /dev/null 2>&1; then
kill -9 "$PID" 2>/dev/null
fi
rm -f "$PID_FILE"
echo "✅ Admin 前端服务已停止"
else
echo "Admin 前端服务未运行"
rm -f "$PID_FILE"
fi
else
echo "未找到 PID 文件,Admin 前端服务可能未运行"
fi
}
status_admin() {
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if ps -p "$PID" > /dev/null 2>&1; then
echo "Admin 前端服务运行中 (PID: $PID, Port: $PORT)"
echo "访问地址: http://localhost:$PORT"
return 0
fi
fi
echo "Admin 前端服务未运行"
return 1
}
logs_admin() {
if [ -f "$LOG_FILE" ]; then
echo "显示最近100行日志 (Ctrl+C 退出):"
tail -100 -f "$LOG_FILE"
else
echo "日志文件不存在: $LOG_FILE"
fi
}
case "${1:-}" in
start)
start_admin
;;
stop)
stop_admin
;;
restart)
stop_admin
sleep 2
start_admin
;;
status)
status_admin
;;
logs)
logs_admin
;;
*)
echo "用法: $0 {start|stop|restart|status|logs}"
echo ""
echo "环境变量:"
echo " ADMIN_PORT - Admin 服务端口 (默认: 5174)"
echo ""
echo "示例:"
echo " ADMIN_PORT=3000 $0 start # 在端口3000启动"
echo " $0 logs # 查看日志"
exit 1
;;
esac