| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- @echo off
- chcp 65001 >nul
- setlocal EnableDelayedExpansion
- rem Set basic variables
- set "SCRIPT_DIR=%~dp0"
- set "LOG_DIR=%SCRIPT_DIR%logs"
- set "BACKEND_PID_FILE=%SCRIPT_DIR%backend.pid"
- if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
- set "LOG_FILE=%LOG_DIR%\server_%date:~0,4%%date:~5,2%%date:~8,2%.log"
- rem Clean up old processes and files
- taskkill /F /IM python.exe /FI "WINDOWTITLE eq OpenWebUI*" >nul 2>&1
- timeout /t 2 >nul
- if exist "%BACKEND_PID_FILE%" del "%BACKEND_PID_FILE%"
- goto :main
- :write_log
- echo [%date% %time%] %~1
- echo [%date% %time%] %~1 >> "%LOG_FILE%"
- exit /b
- :start_backend
- cd /d "%SCRIPT_DIR%backend"
- call :write_log "Starting backend service..."
- start "OpenWebUI Backend" /B cmd /c start_windows.bat
- if errorlevel 1 (
- call :write_log "Failed to start backend"
- exit /b 1
- )
- timeout /t 5 >nul
- for /f "tokens=2" %%a in ('wmic process where "commandline like '%%python%%' and name='python.exe'" get processid ^| findstr /r "[0-9]"') do (
- echo %%a > "%BACKEND_PID_FILE%"
- call :write_log "Backend started with PID: %%a"
- exit /b 0
- )
- call :write_log "Failed to get backend PID"
- exit /b 1
- :start
- call :write_log "Starting backend service..."
- call conda activate open-webui
- if errorlevel 1 (
- call :write_log "Failed to activate conda environment"
- goto :cleanup
- )
- call :start_backend
- if errorlevel 1 goto :cleanup
- cd /d "%SCRIPT_DIR%"
- call :write_log "Backend service started successfully"
- exit /b 0
- :cleanup
- call :write_log "Start failed, cleaning up..."
- call :stop
- exit /b 1
- :stop
- call :write_log "Stopping services..."
- if exist "%BACKEND_PID_FILE%" (
- for /f %%a in (%BACKEND_PID_FILE%) do (
- taskkill /F /T /PID %%a >nul 2>&1
- if not errorlevel 1 call :write_log "Stopped backend process (PID: %%a)"
- )
- del "%BACKEND_PID_FILE%"
- )
- for /f "tokens=2" %%a in ('wmic process where "commandline like '%%python%%' and name='python.exe'" get processid ^| findstr /r "[0-9]"') do (
- taskkill /F /T /PID %%a >nul 2>&1
- call :write_log "Stopped additional Python process (PID: %%a)"
- )
- call :write_log "All services stopped"
- exit /b 0
- :status
- set "running=0"
- if exist "%BACKEND_PID_FILE%" (
- for /f %%a in (%BACKEND_PID_FILE%) do (
- tasklist /FI "PID eq %%a" 2>nul | find "%%a" >nul
- if not errorlevel 1 (
- call :write_log "Backend is running (PID: %%a)"
- set /a running+=1
- )
- )
- )
- if %running% equ 1 (
- call :write_log "Backend service is running"
- exit /b 0
- ) else (
- call :write_log "Backend service is not running"
- exit /b 1
- )
- :main
- if "%1"=="" (
- echo Usage: %~nx0 {start^|stop^|status}
- exit /b 1
- )
- if "%1"=="start" (
- call :stop
- timeout /t 2 >nul
- call :start
- ) else if "%1"=="stop" (
- call :stop
- ) else if "%1"=="status" (
- call :status
- ) else (
- echo Invalid command. Use: %~nx0 {start^|stop^|status}
- exit /b 1
- )
- exit /b %errorlevel%
|