问题:Vite开发服务器经常崩溃导致前端无法访问 解决方案: 1. PM2稳定模式(推荐): - ecosystem.config.js: PM2配置文件 - start_with_pm2.sh: PM2一键启动脚本 - 自动重启崩溃服务,内存限制500MB(前端)/1GB(后端) - 日志管理,所有日志保存到logs目录 2. 保活监控模式(备选): - keep_alive.sh: 每10秒检测服务状态 - 发现崩溃自动重启前端/后端服务 3. 更新README.md:详细说明三种启动方式及优劣 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
81 lines
2.1 KiB
Bash
Executable File
81 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# ==========================================
|
|
# ljwx-stock - 保活监控脚本
|
|
# 自动检测并重启崩溃的前端服务
|
|
# ==========================================
|
|
|
|
FRONTEND_PORT=8448
|
|
BACKEND_PORT=8028
|
|
CHECK_INTERVAL=10 # 每10秒检查一次
|
|
|
|
# 颜色定义
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
log() {
|
|
echo -e "[$(date +'%Y-%m-%d %H:%M:%S')] $1"
|
|
}
|
|
|
|
check_and_restart_frontend() {
|
|
if ! lsof -Pi :$FRONTEND_PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
|
|
log "${RED}✗ Frontend service down!${NC}"
|
|
log "${YELLOW}→ Restarting frontend...${NC}"
|
|
|
|
# 清理旧进程
|
|
if [ -f ".frontend.pid" ]; then
|
|
kill $(cat .frontend.pid) 2>/dev/null || true
|
|
rm -f .frontend.pid
|
|
fi
|
|
|
|
# 重启前端
|
|
cd frontend
|
|
mkdir -p ../logs
|
|
npm run dev > ../logs/frontend.log 2>&1 &
|
|
echo $! > ../.frontend.pid
|
|
cd ..
|
|
|
|
sleep 5
|
|
|
|
if lsof -Pi :$FRONTEND_PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
|
|
log "${GREEN}✓ Frontend restarted successfully${NC}"
|
|
else
|
|
log "${RED}✗ Frontend restart failed${NC}"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
check_and_restart_backend() {
|
|
if ! lsof -Pi :$BACKEND_PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
|
|
log "${RED}✗ Backend service down!${NC}"
|
|
log "${YELLOW}→ Restarting backend...${NC}"
|
|
|
|
# 重启后端
|
|
cd backend
|
|
source .venv/bin/activate
|
|
uvicorn main:app --host 0.0.0.0 --port $BACKEND_PORT --reload > ../logs/backend.log 2>&1 &
|
|
cd ..
|
|
|
|
sleep 5
|
|
|
|
if lsof -Pi :$BACKEND_PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
|
|
log "${GREEN}✓ Backend restarted successfully${NC}"
|
|
else
|
|
log "${RED}✗ Backend restart failed${NC}"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# 主循环
|
|
log "${GREEN}Starting keep-alive monitor...${NC}"
|
|
log "Monitoring ports: Frontend=$FRONTEND_PORT, Backend=$BACKEND_PORT"
|
|
log "Check interval: ${CHECK_INTERVAL}s"
|
|
|
|
while true; do
|
|
check_and_restart_frontend
|
|
check_and_restart_backend
|
|
sleep $CHECK_INTERVAL
|
|
done
|