56 lines
1.3 KiB
Bash
Executable File
56 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -Eeuo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
BACKEND_PID=""
|
|
FRONTEND_PID=""
|
|
CLEANED_UP=0
|
|
|
|
cleanup() {
|
|
if [[ "${CLEANED_UP}" -eq 1 ]]; then
|
|
return
|
|
fi
|
|
CLEANED_UP=1
|
|
|
|
trap - EXIT INT TERM
|
|
for pid in "${BACKEND_PID}" "${FRONTEND_PID}"; do
|
|
if [[ -n "${pid}" ]] && kill -0 "${pid}" 2>/dev/null; then
|
|
kill "${pid}" 2>/dev/null || true
|
|
fi
|
|
done
|
|
for pid in "${BACKEND_PID}" "${FRONTEND_PID}"; do
|
|
if [[ -n "${pid}" ]]; then
|
|
wait "${pid}" 2>/dev/null || true
|
|
fi
|
|
done
|
|
}
|
|
|
|
trap cleanup EXIT INT TERM
|
|
|
|
"${SCRIPT_DIR}/run_backend.sh" &
|
|
BACKEND_PID=$!
|
|
|
|
"${SCRIPT_DIR}/run_frontend.sh" &
|
|
FRONTEND_PID=$!
|
|
|
|
echo "前后端调试服务已启动,按 Ctrl+C 同时停止。"
|
|
echo "日常开发建议在两个终端分别运行 run_backend.sh 和 run_frontend.sh。"
|
|
|
|
while true; do
|
|
if ! kill -0 "${BACKEND_PID}" 2>/dev/null; then
|
|
status=0
|
|
wait "${BACKEND_PID}" || status=$?
|
|
echo "平台后端已退出(状态码:${status}),正在停止前端。" >&2
|
|
exit "${status}"
|
|
fi
|
|
if ! kill -0 "${FRONTEND_PID}" 2>/dev/null; then
|
|
status=0
|
|
wait "${FRONTEND_PID}" || status=$?
|
|
echo "平台前端已退出(状态码:${status}),正在停止后端。" >&2
|
|
exit "${status}"
|
|
fi
|
|
sleep 1
|
|
done
|