Files

43 lines
1.8 KiB
Batchfile
Raw Permalink Normal View History

@echo off
title DSH-Guard-3080
echo ==========================================
echo DSH Web 自动重启守护
echo 端口 3080 web profile
echo 服务在运行则等待;被终止/崩溃后自动重启
echo 关闭本窗口 = 停止守护
echo 重启历史: %~dp0logs\dsh-restart.log
echo 退出留痕: %~dp0logs\guard-exit.log
echo ==========================================
set DSH_PORT=3080
set npm_config_registry=https://registry.npmmirror.com
set NODE_OPTIONS=
set LOGDIR=%~dp0logs
if not exist "%LOGDIR%" mkdir "%LOGDIR%"
rem ===== 防重复(guard-check.ps1 只统计 自动重启DSH.bat 守护窗口,其他入口不误判) =====
set GUARD_N=0
for /f %%p in ('powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0guard-check.ps1"') do set GUARD_N=%%p
if "%GUARD_N%"=="" set GUARD_N=0
if %GUARD_N% gtr 1 (
echo [%date% %time%] GUARD-DUP 已有守护窗口在运行(%GUARD_N% 个),本窗口自动退出 >> "%LOGDIR%\guard-exit.log"
echo [%date% %time%] 已有守护窗口在运行(%GUARD_N% 个),本窗口自动退出。
timeout /t 5 /nobreak >nul
exit /b 0
)
echo [%date% %time%] GUARD-START 守护启动(同名窗口 %GUARD_N% 个) >> "%LOGDIR%\guard-exit.log"
:loop
netstat -ano | findstr /r /c:":3080 .*LISTENING" >nul 2>&1
if not errorlevel 1 (
echo [%date% %time%] 服务已在运行,5 秒后重新检测...
timeout /t 5 /nobreak >nul
goto loop
)
echo [%date% %time%] 启动 DSH web (端口 %DSH_PORT%) ...
echo [%date% %time%] START dsh web --port %DSH_PORT% --no-open >> "%LOGDIR%\dsh-restart.log"
rem 分离启动:DSH 在独立控制台窗口(DSH-Runner)运行,守护只监视端口;
rem kill DSH 不会连坐守护窗口;启动后等待 45 秒再检测,避免重复拉起。
start "DSH-Runner" /min cmd /c "npx -y @deepseek-ai/[email protected] web --port %DSH_PORT% --no-open >> %LOGDIR%\dsh-restart.log 2>&1"
echo [%date% %time%] DSH-RUNNER 已分离启动,45 秒后重新检测端口 >> "%LOGDIR%\dsh-restart.log"
timeout /t 45 /nobreak >nul
goto loop