43 lines
1.8 KiB
Batchfile
43 lines
1.8 KiB
Batchfile
@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
|