你好!
我写了个start脚本,来启动我的spring boot后端和node前端,在tasktick里面运行该脚本后,我看到日志突然会变得很多,然后app阻塞不可点。怀疑是日志交互或者读取的问题~
我的项目是魔改ruoyi项目的,国内gitee上有这个项目。
下面是我写的启动脚本。
#!/bin/bash
set -e
# ===========================
# 一键启动 (macOS)
# ===========================
# ---- 自动推导项目根目录 ----
ROOT="$(cd "$(dirname "$0")" && pwd)"
# ---- 可配置项 ----
MVN="/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/bin/mvn"
POM="$ROOT/pom.xml"
BACKEND_DIR="$ROOT/ruoyi-admin/target"
BACKEND_JAR="$BACKEND_DIR/ruoyi-admin.jar"
FRONTEND_DIR="$ROOT/ruoyi-ui"
JAVA_OPTS="-XX:TieredStopAtLevel=1 -Dfile.encoding=UTF-8"
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
# ---- 清理函数 ----
cleanup() {
echo ""
echo -e "${YELLOW}正在关闭后端服务...${NC}"
if [ -n "$BACKEND_PID" ] && kill -0 "$BACKEND_PID" 2>/dev/null; then
kill "$BACKEND_PID" 2>/dev/null
wait "$BACKEND_PID" 2>/dev/null
fi
echo -e "${GREEN}已关闭所有服务。${NC}"
exit 0
}
trap cleanup INT TERM
# ---- 1. 检查 MySQL ----
echo -e "${GREEN}[1/4]${NC} 检查 MySQL(端口 3306)..."
if lsof -i :3306 -sTCP:LISTEN >/dev/null 2>&1; then
echo -e " ${GREEN}✓${NC} MySQL 已运行"
else
echo -e " ${YELLOW}!${NC} MySQL 未运行,尝试通过 brew 启动..."
/opt/homebrew/bin/brew services start mysql 2>/dev/null || {
echo -e "${RED}✗ 无法启动 MySQL,请手动启动后重试${NC}"
exit 1
}
sleep 3
echo -e " ${GREEN}✓${NC} MySQL 已启动"
fi
# ---- 2. 检查 Redis ----
echo -e "${GREEN}[2/4]${NC} 检查 Redis(端口 6379)..."
if lsof -i :6379 -sTCP:LISTEN >/dev/null 2>&1; then
echo -e " ${GREEN}✓${NC} Redis 已运行"
else
echo -e " ${YELLOW}!${NC} Redis 未运行,尝试通过 brew 启动..."
/opt/homebrew/bin/brew services start redis 2>/dev/null || {
echo -e "${RED}✗ 无法启动 Redis,请手动启动后重试${NC}"
exit 1
}
sleep 2
echo -e " ${GREEN}✓${NC} Redis 已启动"
fi
# ---- 3. 启动后端 ----
echo -e "${GREEN}[3/4]${NC} 启动后端..."
if [ ! -f "$BACKEND_JAR" ]; then
echo -e " ${YELLOW}!${NC} 未找到后端 jar,开始编译..."
cd "$ROOT"
"$MVN" -f "$POM" clean package -DskipTests -q
echo -e " ${GREEN}✓${NC} 编译完成"
fi
echo -e " → 启动 Spring Boot(端口 8080)..."
java $JAVA_OPTS -jar "$BACKEND_JAR" &
BACKEND_PID=$!
# 等待后端就绪
echo -n " → 等待后端就绪"
for i in $(seq 1 30); do
if curl -s http://localhost:8080 >/dev/null 2>&1; then
echo ""
echo -e " ${GREEN}✓${NC} 后端启动成功"
break
fi
sleep 2
echo -n "."
done
if ! kill -0 "$BACKEND_PID" 2>/dev/null; then
echo ""
echo -e "${RED}✗ 后端启动失败,请检查日志${NC}"
exit 1
fi
# ---- 4. 启动前端 ----
echo -e "${GREEN}[4/4]${NC} 启动前端..."
if [ ! -d "$FRONTEND_DIR/node_modules" ]; then
echo -e " ${YELLOW}!${NC} 首次运行,安装前端依赖..."
cd "$FRONTEND_DIR"
npm install
fi
echo -e " → 启动 Vue 开发服务器(端口 80)..."
echo -e " ${GREEN}✓${NC} 浏览器将自动打开 http://localhost"
echo ""
cd "$FRONTEND_DIR"
npm run dev &
FRONTEND_PID=$!
# ---- 等待进程退出 ----
echo -e "${YELLOW}按 Ctrl+C 停止所有服务${NC}"
wait $FRONTEND_PID 2>/dev/null
cleanup
你好!
我写了个start脚本,来启动我的spring boot后端和node前端,在tasktick里面运行该脚本后,我看到日志突然会变得很多,然后app阻塞不可点。怀疑是日志交互或者读取的问题~
我的项目是魔改ruoyi项目的,国内gitee上有这个项目。
下面是我写的启动脚本。