8c31cecb37
数据大盘新增/增强两块运营配置: - 首页轮播种子(新):列表/新增/编辑/批量生成/预览效果;用户名可空(留空自动合成)、金额区间(min~max) - 首页数据配置(增强):自增长「百分比/固定增量」切换、真实值基数偏移、「允许数字下降」(只增不减)开关、下次预计值、立即更新二次确认;倍率上限 1.5 - 依赖 @ant-design/v5-patch-for-react-19(React 19 兼容,providers 顶部 import) - start.sh/stop.sh 跨平台重写;.run-logs/ 加入 .gitignore Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
40 lines
1.5 KiB
Bash
Executable File
40 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# 停止 start.sh 起的三个服务:用户侧 API(8770) + 后台 API(8771) + 前端(3001)。
|
|
# 双保险:先按 start.sh 落的 PID 文件杀,再按端口兜底(Windows 走 PowerShell,mac 走 lsof)。
|
|
# (PG 若由 brew 自启,本脚本不停它。)
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
LOG_DIR="$SCRIPT_DIR/.run-logs"
|
|
|
|
case "$(uname -s)" in
|
|
MINGW* | MSYS* | CYGWIN*) IS_WIN=1 ;;
|
|
*) IS_WIN=0 ;;
|
|
esac
|
|
|
|
# 1) 按 PID 文件杀(start.sh 启动时落的 MSYS/进程 PID)
|
|
for name in user-api admin-api admin-web; do
|
|
pf="$LOG_DIR/$name.pid"
|
|
[ -f "$pf" ] || continue
|
|
pid="$(cat "$pf" 2>/dev/null)"
|
|
[ -n "$pid" ] && kill -9 "$pid" 2>/dev/null && echo " $name: 杀 PID $pid"
|
|
rm -f "$pf"
|
|
done
|
|
|
|
# 2) 按端口兜底(catch 掉 reload 子进程 / 孤儿 node 等)
|
|
kill_port() {
|
|
local p="$1"
|
|
if [ "$IS_WIN" = "1" ]; then
|
|
# 用 PowerShell 的 Get-NetTCPConnection→Stop-Process,比 netstat+taskkill 可靠
|
|
powershell.exe -NoProfile -Command \
|
|
"Get-NetTCPConnection -LocalPort $p -State Listen -ErrorAction SilentlyContinue | Select-Object -Expand OwningProcess -Unique | ForEach-Object { try { Stop-Process -Id \$_ -Force -ErrorAction Stop; 'killed pid '+\$_+' on :$p' } catch {} }" \
|
|
2>/dev/null | tr -d '\r'
|
|
else
|
|
lsof -ti "tcp:$p" 2>/dev/null | xargs -r kill -9 2>/dev/null && echo " killed listener on :$p"
|
|
fi
|
|
}
|
|
|
|
for port in 8770 8771 3001; do
|
|
kill_port "$port"
|
|
done
|
|
|
|
echo "✅ 已停止(用户侧 8770 / 后台 8771 / 前端 3001)。"
|