项目启停
This commit is contained in:
+10
-9
@@ -8,22 +8,23 @@ PID_FILE="$RUN_DIR/spine-particle.pid"
|
|||||||
|
|
||||||
cd "$PROJECT_DIR" || exit 1
|
cd "$PROJECT_DIR" || exit 1
|
||||||
|
|
||||||
if [[ ! -f "$PID_FILE" ]]; then
|
SERVER_PID=""
|
||||||
echo "没有发现由“启动项目.command”启动的项目进程。"
|
if [[ -f "$PID_FILE" ]]; then SERVER_PID="$(tr -dc '0-9' < "$PID_FILE")"; fi
|
||||||
exit 0
|
if [[ -z "$SERVER_PID" ]] || ! kill -0 "$SERVER_PID" 2>/dev/null; then
|
||||||
|
# 没有 PID 文件时,查找当前占用 5173 端口的服务。
|
||||||
|
SERVER_PID="$(lsof -tiTCP:5173 -sTCP:LISTEN 2>/dev/null | head -n 1)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
SERVER_PID="$(tr -dc '0-9' < "$PID_FILE")"
|
if [[ -z "$SERVER_PID" ]]; then
|
||||||
if [[ -z "$SERVER_PID" ]] || ! kill -0 "$SERVER_PID" 2>/dev/null; then
|
|
||||||
rm -f "$PID_FILE"
|
rm -f "$PID_FILE"
|
||||||
echo "项目已经停止。"
|
echo "项目已经停止。"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
SERVER_COMMAND="$(ps -p "$SERVER_PID" -o command= 2>/dev/null || true)"
|
PROCESS_CWD="$(lsof -a -p "$SERVER_PID" -d cwd -Fn 2>/dev/null | sed -n 's/^n//p' | head -n 1)"
|
||||||
if [[ "$SERVER_COMMAND" != *"$PROJECT_DIR/node_modules/vite/"* ]]; then
|
if [[ "$PROCESS_CWD" != "$PROJECT_DIR" ]]; then
|
||||||
echo "PID 已被其他程序占用,为避免误关进程,本次未执行停止操作。"
|
echo "占用进程不属于当前项目,为避免误关,本次未执行停止操作。"
|
||||||
echo "当前进程:$SERVER_COMMAND"
|
echo "进程目录:${PROCESS_CWD:-未知}"
|
||||||
rm -f "$PID_FILE"
|
rm -f "$PID_FILE"
|
||||||
read "?按回车键关闭窗口..."
|
read "?按回车键关闭窗口..."
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
+22
-2
@@ -8,6 +8,10 @@ PID_FILE="$RUN_DIR/spine-particle.pid"
|
|||||||
LOG_FILE="$RUN_DIR/spine-particle.log"
|
LOG_FILE="$RUN_DIR/spine-particle.log"
|
||||||
URL="http://127.0.0.1:5173/"
|
URL="http://127.0.0.1:5173/"
|
||||||
|
|
||||||
|
open_project_url() {
|
||||||
|
if [[ "${SPINE_PARTICLE_NO_OPEN:-0}" != "1" ]]; then open "$URL"; fi
|
||||||
|
}
|
||||||
|
|
||||||
mkdir -p "$RUN_DIR"
|
mkdir -p "$RUN_DIR"
|
||||||
cd "$PROJECT_DIR" || exit 1
|
cd "$PROJECT_DIR" || exit 1
|
||||||
|
|
||||||
@@ -16,12 +20,28 @@ if [[ -f "$PID_FILE" ]]; then
|
|||||||
if [[ -n "$RUNNING_PID" ]] && kill -0 "$RUNNING_PID" 2>/dev/null; then
|
if [[ -n "$RUNNING_PID" ]] && kill -0 "$RUNNING_PID" 2>/dev/null; then
|
||||||
echo "Spine粒子编辑器已经在运行,正在打开页面:"
|
echo "Spine粒子编辑器已经在运行,正在打开页面:"
|
||||||
echo "$URL"
|
echo "$URL"
|
||||||
open "$URL"
|
open_project_url
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
rm -f "$PID_FILE"
|
rm -f "$PID_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# 兼容此前手动启动、尚未生成 PID 文件的本项目服务。
|
||||||
|
PORT_PID="$(lsof -tiTCP:5173 -sTCP:LISTEN 2>/dev/null | head -n 1)"
|
||||||
|
if [[ -n "$PORT_PID" ]]; then
|
||||||
|
PROCESS_CWD="$(lsof -a -p "$PORT_PID" -d cwd -Fn 2>/dev/null | sed -n 's/^n//p' | head -n 1)"
|
||||||
|
if [[ "$PROCESS_CWD" == "$PROJECT_DIR" ]]; then
|
||||||
|
echo "$PORT_PID" > "$PID_FILE"
|
||||||
|
echo "Spine粒子编辑器已经在运行,正在打开页面:"
|
||||||
|
echo "$URL"
|
||||||
|
open_project_url
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "5173 端口正被其他程序占用:$PROCESS_CWD"
|
||||||
|
read "?按回车键关闭窗口..."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
if ! command -v npm >/dev/null 2>&1; then
|
if ! command -v npm >/dev/null 2>&1; then
|
||||||
echo "未找到 npm,请先安装 Node.js。"
|
echo "未找到 npm,请先安装 Node.js。"
|
||||||
echo "https://nodejs.org/"
|
echo "https://nodejs.org/"
|
||||||
@@ -53,7 +73,7 @@ for _ in {1..60}; do
|
|||||||
fi
|
fi
|
||||||
if curl -fsS "$URL" >/dev/null 2>&1; then
|
if curl -fsS "$URL" >/dev/null 2>&1; then
|
||||||
echo "启动成功:$URL"
|
echo "启动成功:$URL"
|
||||||
open "$URL"
|
open_project_url
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
sleep 0.25
|
sleep 0.25
|
||||||
|
|||||||
Reference in New Issue
Block a user