feat: manage worker in leaudit script
This commit is contained in:
+79
-2
@@ -3,11 +3,14 @@
|
||||
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
FRONTEND_DIR="$PROJECT_DIR/legal-platform-frontend"
|
||||
BACKEND_DIR="$PROJECT_DIR"
|
||||
WORKER_SCRIPT="$PROJECT_DIR/scripts/start_worker.sh"
|
||||
LOG_DIR="$PROJECT_DIR/.codex-run"
|
||||
BACKEND_PID_FILE="$LOG_DIR/backend.pid"
|
||||
FRONTEND_PID_FILE="$LOG_DIR/frontend.pid"
|
||||
WORKER_PID_FILE="$LOG_DIR/worker.pid"
|
||||
BACKEND_LOG="$LOG_DIR/backend.log"
|
||||
FRONTEND_LOG="$LOG_DIR/frontend.log"
|
||||
WORKER_LOG="$LOG_DIR/worker.log"
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
@@ -196,6 +199,41 @@ start_frontend() {
|
||||
return 1
|
||||
}
|
||||
|
||||
start_worker() {
|
||||
cleanup_pid_file "$WORKER_PID_FILE"
|
||||
local pid
|
||||
pid=$(service_pid "$WORKER_PID_FILE")
|
||||
if pid_alive "$pid"; then
|
||||
log_warn "Worker 已在运行 (PID: $pid)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ ! -x "$WORKER_SCRIPT" ]; then
|
||||
log_error "Worker 启动脚本不存在或不可执行: $WORKER_SCRIPT"
|
||||
return 1
|
||||
fi
|
||||
|
||||
log_info "启动 Worker 服务..."
|
||||
: > "$WORKER_LOG"
|
||||
(
|
||||
cd "$PROJECT_DIR"
|
||||
exec "$WORKER_SCRIPT"
|
||||
) >> "$WORKER_LOG" 2>&1 &
|
||||
pid=$!
|
||||
echo "$pid" > "$WORKER_PID_FILE"
|
||||
sleep 2
|
||||
|
||||
if pid_alive "$pid"; then
|
||||
log_success "Worker 启动成功 (PID: $pid)"
|
||||
return 0
|
||||
fi
|
||||
|
||||
log_error "Worker 启动失败,查看日志: $WORKER_LOG"
|
||||
tail -20 "$WORKER_LOG" 2>/dev/null || true
|
||||
rm -f "$WORKER_PID_FILE"
|
||||
return 1
|
||||
}
|
||||
|
||||
stop_service() {
|
||||
local name=$1
|
||||
local pid_file=$2
|
||||
@@ -233,11 +271,13 @@ do_start() {
|
||||
|
||||
start_backend || return 1
|
||||
start_frontend || return 1
|
||||
start_worker || return 1
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}============================================${NC}"
|
||||
echo -e "${GREEN} 前端: http://localhost:$FRONTEND_PUBLIC_PORT (开发服务: $FRONTEND_DEV_PORT)${NC}"
|
||||
echo -e "${GREEN} 后端: http://localhost:$BACKEND_PORT${NC}"
|
||||
echo -e "${GREEN} Worker: $WORKER_SCRIPT${NC}"
|
||||
echo -e "${GREEN} 日志目录: $LOG_DIR${NC}"
|
||||
echo -e "${GREEN}============================================${NC}"
|
||||
echo ""
|
||||
@@ -249,6 +289,7 @@ do_stop() {
|
||||
echo -e "${YELLOW} 停止 LeAudit 前后端${NC}"
|
||||
echo -e "${YELLOW}============================================${NC}"
|
||||
echo ""
|
||||
stop_service "Worker" "$WORKER_PID_FILE"
|
||||
stop_service "前端" "$FRONTEND_PID_FILE"
|
||||
stop_service "后端" "$BACKEND_PID_FILE"
|
||||
echo ""
|
||||
@@ -263,6 +304,7 @@ do_restart() {
|
||||
do_status() {
|
||||
cleanup_pid_file "$BACKEND_PID_FILE"
|
||||
cleanup_pid_file "$FRONTEND_PID_FILE"
|
||||
cleanup_pid_file "$WORKER_PID_FILE"
|
||||
|
||||
echo ""
|
||||
echo -e "${CYAN}============================================${NC}"
|
||||
@@ -285,9 +327,17 @@ do_status() {
|
||||
echo -e " 前端: ${RED}○ 已停止${NC}"
|
||||
fi
|
||||
|
||||
pid=$(service_pid "$WORKER_PID_FILE")
|
||||
if pid_alive "$pid"; then
|
||||
echo -e " Worker: ${GREEN}● 运行中${NC} PID=$pid"
|
||||
else
|
||||
echo -e " Worker: ${RED}○ 已停止${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo " 后端日志: $BACKEND_LOG"
|
||||
echo " 前端日志: $FRONTEND_LOG"
|
||||
echo " Worker日志: $WORKER_LOG"
|
||||
echo ""
|
||||
}
|
||||
|
||||
@@ -310,24 +360,36 @@ do_logs() {
|
||||
echo -e "${CYAN}--- Ctrl+C 退出 ---${NC}"
|
||||
tail -f "$FRONTEND_LOG"
|
||||
;;
|
||||
worker)
|
||||
[ -f "$WORKER_LOG" ] || touch "$WORKER_LOG"
|
||||
echo -e "${CYAN}--- Worker 日志 (最近 $lines 行) ---${NC}"
|
||||
tail -n "$lines" "$WORKER_LOG"
|
||||
echo -e "${CYAN}--- Ctrl+C 退出 ---${NC}"
|
||||
tail -f "$WORKER_LOG"
|
||||
;;
|
||||
all)
|
||||
[ -f "$BACKEND_LOG" ] || touch "$BACKEND_LOG"
|
||||
[ -f "$FRONTEND_LOG" ] || touch "$FRONTEND_LOG"
|
||||
[ -f "$WORKER_LOG" ] || touch "$WORKER_LOG"
|
||||
echo -e "${CYAN}--- 后端日志 (最近 $lines 行) ---${NC}"
|
||||
tail -n "$lines" "$BACKEND_LOG"
|
||||
echo ""
|
||||
echo -e "${CYAN}--- 前端日志 (最近 $lines 行) ---${NC}"
|
||||
tail -n "$lines" "$FRONTEND_LOG"
|
||||
echo ""
|
||||
echo -e "${CYAN}--- Worker 日志 (最近 $lines 行) ---${NC}"
|
||||
tail -n "$lines" "$WORKER_LOG"
|
||||
echo ""
|
||||
echo -e "${CYAN}--- Ctrl+C 退出 ---${NC}"
|
||||
tail -n 0 -f "$BACKEND_LOG" "$FRONTEND_LOG" 2>/dev/null | awk '
|
||||
tail -n 0 -f "$BACKEND_LOG" "$FRONTEND_LOG" "$WORKER_LOG" 2>/dev/null | awk '
|
||||
/^==> .*backend\.log <==$/ { current="[backend]"; next }
|
||||
/^==> .*frontend\.log <==$/ { current="[frontend]"; next }
|
||||
/^==> .*worker\.log <==$/ { current="[worker]"; next }
|
||||
{ print current " " $0; fflush() }
|
||||
'
|
||||
;;
|
||||
*)
|
||||
echo "用法: ./leaudit.sh logs [backend|frontend|all] [行数]"
|
||||
echo "用法: ./leaudit.sh logs [backend|frontend|worker|all] [行数]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -369,6 +431,16 @@ do_doctor() {
|
||||
echo -e " 后端服务 $BACKEND_PORT: ${RED}○ 未监听${NC}"
|
||||
fi
|
||||
|
||||
local worker_pid
|
||||
worker_pid=$(service_pid "$WORKER_PID_FILE")
|
||||
if pid_alive "$worker_pid"; then
|
||||
cmd="$(pid_command "$worker_pid")"
|
||||
echo -e " Worker 进程: ${GREEN}● 运行中${NC} PID=$worker_pid"
|
||||
[ -n "$cmd" ] && echo " 命令: $cmd"
|
||||
else
|
||||
echo -e " Worker 进程: ${RED}○ 未运行${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
@@ -381,6 +453,7 @@ do_open() {
|
||||
echo " 前端访问: http://localhost:$FRONTEND_PUBLIC_PORT"
|
||||
echo " 前端开发: http://127.0.0.1:$FRONTEND_DEV_PORT"
|
||||
echo " 后端访问: http://localhost:$BACKEND_PORT"
|
||||
echo " Worker脚本: $WORKER_SCRIPT"
|
||||
echo ""
|
||||
echo -e "${CYAN}--- 后端最近 5 行 ---${NC}"
|
||||
tail -n 5 "$BACKEND_LOG" 2>/dev/null || echo "(无后端日志)"
|
||||
@@ -388,6 +461,9 @@ do_open() {
|
||||
echo -e "${CYAN}--- 前端最近 5 行 ---${NC}"
|
||||
tail -n 5 "$FRONTEND_LOG" 2>/dev/null || echo "(无前端日志)"
|
||||
echo ""
|
||||
echo -e "${CYAN}--- Worker最近 5 行 ---${NC}"
|
||||
tail -n 5 "$WORKER_LOG" 2>/dev/null || echo "(无Worker日志)"
|
||||
echo ""
|
||||
}
|
||||
|
||||
case "${1:-help}" in
|
||||
@@ -423,6 +499,7 @@ case "${1:-help}" in
|
||||
echo " logs 查看前后端日志并持续跟踪"
|
||||
echo " logs backend 只看后端日志"
|
||||
echo " logs frontend 50 看前端最近 50 行日志并持续跟踪"
|
||||
echo " logs worker 50 看 Worker 最近 50 行日志并持续跟踪"
|
||||
echo " doctor 检查 5173 / 5193 / 8096 端口占用情况"
|
||||
echo " open 打印访问地址和最近日志摘要"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user