#!/bin/zsh set -u PROJECT_DIR="${0:A:h}" RUN_DIR="$PROJECT_DIR/.run" PID_FILE="$RUN_DIR/spine-particle.pid" cd "$PROJECT_DIR" || exit 1 if [[ ! -f "$PID_FILE" ]]; then echo "没有发现由“启动项目.command”启动的项目进程。" exit 0 fi SERVER_PID="$(tr -dc '0-9' < "$PID_FILE")" if [[ -z "$SERVER_PID" ]] || ! kill -0 "$SERVER_PID" 2>/dev/null; then rm -f "$PID_FILE" echo "项目已经停止。" exit 0 fi SERVER_COMMAND="$(ps -p "$SERVER_PID" -o command= 2>/dev/null || true)" if [[ "$SERVER_COMMAND" != *"$PROJECT_DIR/node_modules/vite/"* ]]; then echo "PID 已被其他程序占用,为避免误关进程,本次未执行停止操作。" echo "当前进程:$SERVER_COMMAND" rm -f "$PID_FILE" read "?按回车键关闭窗口..." exit 1 fi echo "正在停止 Spine粒子编辑器..." kill "$SERVER_PID" 2>/dev/null || true for _ in {1..20}; do if ! kill -0 "$SERVER_PID" 2>/dev/null; then rm -f "$PID_FILE" echo "项目已停止。" exit 0 fi sleep 0.1 done echo "普通停止未响应,正在强制结束该项目进程..." kill -KILL "$SERVER_PID" 2>/dev/null || true rm -f "$PID_FILE" echo "项目已停止。"