From 29aa86471f855b1cb694cb80207d9de35171a06c Mon Sep 17 00:00:00 2001 From: MT-Fire <798521692@qq.com> Date: Tue, 10 Mar 2026 13:32:06 +0800 Subject: [PATCH] =?UTF-8?q?debug:=20=E4=BF=AE=E5=A4=8D=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=E7=9A=84=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stop.sh | 220 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 110 insertions(+), 110 deletions(-) mode change 100755 => 100644 stop.sh diff --git a/stop.sh b/stop.sh old mode 100755 new mode 100644 index 6418c5a..a8fd622 --- a/stop.sh +++ b/stop.sh @@ -1,111 +1,111 @@ -#!/bin/bash - -# Paper Burner X - 停止脚本 - -# 颜色定义 -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color - -PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)" -BACKEND_PORT=3456 -FRONTEND_PORT=8080 -PID_DIR="$PROJECT_DIR/.pids" - -echo -e "${BLUE}" -echo "======================================" -echo " Paper Burner X - 停止脚本" -echo "======================================" -echo -e "${NC}" - -# 函数:根据端口查找并杀死进程 -kill_port() { - local port=$1 - local pids=$(lsof -t -i:$port 2>/dev/null) - if [ -n "$pids" ]; then - echo -e "${YELLOW}→ 终止端口 $port 上的进程...${NC}" - for pid in $pids; do - kill -15 $pid 2>/dev/null - if kill -0 $pid 2>/dev/null; then - sleep 1 - kill -9 $pid 2>/dev/null - fi - echo -e " ${GREEN}已终止进程 $pid${NC}" - done - return 0 - else - return 1 - fi -} - -# 函数:根据 PID 文件杀死进程 -kill_pid_file() { - local pid_file=$1 - local service_name=$2 - if [ -f "$pid_file" ]; then - local pid=$(cat "$pid_file") - if [ -n "$pid" ] && kill -0 $pid 2>/dev/null; then - echo -e "${YELLOW}→ 终止 $service_name (PID: $pid)...${NC}" - kill -15 $pid 2>/dev/null - # 等待进程退出 - local count=0 - while kill -0 $pid 2>/dev/null && [ $count -lt 5 ]; do - sleep 0.5 - count=$((count + 1)) - done - # 如果进程还在,强制终止 - if kill -0 $pid 2>/dev/null; then - kill -9 $pid 2>/dev/null - fi - echo -e " ${GREEN}已终止${NC}" - fi - rm -f "$pid_file" - fi -} - -STOPPED_SOMETHING=false - -# 1. 通过 PID 文件停止 -echo -e "${YELLOW}[1/2] 通过 PID 文件停止服务...${NC}" - -if [ -f "$PID_DIR/backend.pid" ]; then - kill_pid_file "$PID_DIR/backend.pid" "后端服务" - STOPPED_SOMETHING=true -fi - -if [ -f "$PID_DIR/frontend.pid" ]; then - kill_pid_file "$PID_DIR/frontend.pid" "前端服务" - STOPPED_SOMETHING=true -fi - -# 2. 通过端口确保彻底清理 -echo -e "${YELLOW}[2/2] 确保端口已释放...${NC}" - -if kill_port $BACKEND_PORT; then - STOPPED_SOMETHING=true -else - echo -e " ${GREEN}端口 $BACKEND_PORT 已空闲${NC}" -fi - -if kill_port $FRONTEND_PORT; then - STOPPED_SOMETHING=true -else - echo -e " ${GREEN}端口 $FRONTEND_PORT 已空闲${NC}" -fi - -echo "" -if [ "$STOPPED_SOMETHING" = true ]; then - echo -e "${GREEN}" - echo "======================================" - echo " 服务已停止" - echo "======================================" - echo -e "${NC}" -else - echo -e "${YELLOW}" - echo "======================================" - echo " 没有运行中的服务" - echo "======================================" - echo -e "${NC}" +#!/bin/bash + +# Paper Burner X - 停止脚本 + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)" +BACKEND_PORT=3456 +FRONTEND_PORT=8080 +PID_DIR="$PROJECT_DIR/.pids" + +echo -e "${BLUE}" +echo "======================================" +echo " Paper Burner X - 停止脚本" +echo "======================================" +echo -e "${NC}" + +# 函数:根据端口查找并杀死进程 +kill_port() { + local port=$1 + local pids=$(lsof -t -i:$port 2>/dev/null) + if [ -n "$pids" ]; then + echo -e "${YELLOW}→ 终止端口 $port 上的进程...${NC}" + for pid in $pids; do + kill -15 $pid 2>/dev/null + if kill -0 $pid 2>/dev/null; then + sleep 1 + kill -9 $pid 2>/dev/null + fi + echo -e " ${GREEN}已终止进程 $pid${NC}" + done + return 0 + else + return 1 + fi +} + +# 函数:根据 PID 文件杀死进程 +kill_pid_file() { + local pid_file=$1 + local service_name=$2 + if [ -f "$pid_file" ]; then + local pid=$(cat "$pid_file") + if [ -n "$pid" ] && kill -0 $pid 2>/dev/null; then + echo -e "${YELLOW}→ 终止 $service_name (PID: $pid)...${NC}" + kill -15 $pid 2>/dev/null + # 等待进程退出 + local count=0 + while kill -0 $pid 2>/dev/null && [ $count -lt 5 ]; do + sleep 0.5 + count=$((count + 1)) + done + # 如果进程还在,强制终止 + if kill -0 $pid 2>/dev/null; then + kill -9 $pid 2>/dev/null + fi + echo -e " ${GREEN}已终止${NC}" + fi + rm -f "$pid_file" + fi +} + +STOPPED_SOMETHING=false + +# 1. 通过 PID 文件停止 +echo -e "${YELLOW}[1/2] 通过 PID 文件停止服务...${NC}" + +if [ -f "$PID_DIR/backend.pid" ]; then + kill_pid_file "$PID_DIR/backend.pid" "后端服务" + STOPPED_SOMETHING=true +fi + +if [ -f "$PID_DIR/frontend.pid" ]; then + kill_pid_file "$PID_DIR/frontend.pid" "前端服务" + STOPPED_SOMETHING=true +fi + +# 2. 通过端口确保彻底清理 +echo -e "${YELLOW}[2/2] 确保端口已释放...${NC}" + +if kill_port $BACKEND_PORT; then + STOPPED_SOMETHING=true +else + echo -e " ${GREEN}端口 $BACKEND_PORT 已空闲${NC}" +fi + +if kill_port $FRONTEND_PORT; then + STOPPED_SOMETHING=true +else + echo -e " ${GREEN}端口 $FRONTEND_PORT 已空闲${NC}" +fi + +echo "" +if [ "$STOPPED_SOMETHING" = true ]; then + echo -e "${GREEN}" + echo "======================================" + echo " 服务已停止" + echo "======================================" + echo -e "${NC}" +else + echo -e "${YELLOW}" + echo "======================================" + echo " 没有运行中的服务" + echo "======================================" + echo -e "${NC}" fi \ No newline at end of file