36 lines
1.1 KiB
Bash
36 lines
1.1 KiB
Bash
#!/bin/zsh
|
|
|
|
set -u
|
|
|
|
PACKAGE_DIR="${0:A:h}"
|
|
PID_FILE="$PACKAGE_DIR/.run/spine-connector.pid"
|
|
CONNECTOR_BIN="$PACKAGE_DIR/SpineParticleConnector"
|
|
CONNECTOR_PID=""
|
|
|
|
if [[ -f "$PID_FILE" ]]; then CONNECTOR_PID="$(tr -dc '0-9' < "$PID_FILE")"; fi
|
|
if [[ -z "$CONNECTOR_PID" ]] || ! kill -0 "$CONNECTOR_PID" 2>/dev/null; then
|
|
CONNECTOR_PID="$(lsof -tiTCP:27843 -sTCP:LISTEN 2>/dev/null | head -n 1)"
|
|
fi
|
|
|
|
if [[ -z "$CONNECTOR_PID" ]] || ! kill -0 "$CONNECTOR_PID" 2>/dev/null; then
|
|
rm -f "$PID_FILE"
|
|
echo "Spine粒子连接器已经停止。"
|
|
exit 0
|
|
fi
|
|
|
|
COMMAND="$(ps -p "$CONNECTOR_PID" -o command= 2>/dev/null)"
|
|
if [[ "$COMMAND" != *"$CONNECTOR_BIN"* ]] && [[ "$COMMAND" != *"SpineParticleConnector"* ]]; then
|
|
echo "27843 端口对应的进程不是此独立连接器,为避免误关,本次未执行停止。"
|
|
rm -f "$PID_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
kill "$CONNECTOR_PID" 2>/dev/null || true
|
|
for _ in {1..30}; do
|
|
if ! kill -0 "$CONNECTOR_PID" 2>/dev/null; then break; fi
|
|
sleep 0.1
|
|
done
|
|
if kill -0 "$CONNECTOR_PID" 2>/dev/null; then kill -KILL "$CONNECTOR_PID" 2>/dev/null || true; fi
|
|
rm -f "$PID_FILE"
|
|
echo "Spine粒子连接器已停止。"
|