94 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Batchfile
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Batchfile
		
	
	
	
	
	
@echo off
 | 
						|
REM snail-job.bat start|stop|restart|status
 | 
						|
set AppName=snail-job-server-exec.jar
 | 
						|
 | 
						|
REM JVM options
 | 
						|
set JVM_OPTS=-Dname=%AppName% -Duser.timezone=Asia/Shanghai -XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC
 | 
						|
set APP_HOME=%cd%
 | 
						|
 | 
						|
REM Check if an action is passed, default to "start" if empty
 | 
						|
if "%1"=="" (
 | 
						|
    echo No action provided, default to: start
 | 
						|
    set ACTION=start
 | 
						|
) else (
 | 
						|
    set ACTION=%1
 | 
						|
)
 | 
						|
 | 
						|
if "%AppName%"=="" (
 | 
						|
    echo No application name provided
 | 
						|
    exit /b 1
 | 
						|
)
 | 
						|
 | 
						|
REM Check the action before executing
 | 
						|
if /i "%ACTION%"=="start" (
 | 
						|
    call :Start
 | 
						|
) else if /i "%ACTION%"=="stop" (
 | 
						|
    call :Stop
 | 
						|
) else if /i "%ACTION%"=="restart" (
 | 
						|
    call :Restart
 | 
						|
) else if /i "%ACTION%"=="status" (
 | 
						|
    call :Status
 | 
						|
) else (
 | 
						|
    echo Invalid action. Valid actions are: {start|stop|restart|status}
 | 
						|
    exit /b 1
 | 
						|
)
 | 
						|
 | 
						|
goto :eof
 | 
						|
 | 
						|
:Start
 | 
						|
REM Check if the program is already running using jps
 | 
						|
for /f "tokens=1" %%i in ('jps -l ^| findstr %AppName%') do set PID=%%i
 | 
						|
 | 
						|
if defined PID (
 | 
						|
    echo %AppName% is already running with PID %PID%...
 | 
						|
) else (
 | 
						|
    start "" /b javaw %JVM_OPTS% -jar %AppName%
 | 
						|
    echo Start %AppName% success...
 | 
						|
)
 | 
						|
goto :eof
 | 
						|
 | 
						|
:Stop
 | 
						|
set "PID="
 | 
						|
 | 
						|
REM Find the process using jps and stop it
 | 
						|
for /f "tokens=1" %%i in ('jps -l ^| findstr %AppName%') do (
 | 
						|
    set "PID=%%i"
 | 
						|
)
 | 
						|
 | 
						|
REM Removing any extra spaces from PID (just in case)
 | 
						|
for /f "tokens=* delims= " %%i in ("%PID%") do set "PID=%%i"
 | 
						|
 | 
						|
REM Verify if PID is defined
 | 
						|
if defined PID (
 | 
						|
    REM Using TASKKILL to kill the process
 | 
						|
    taskkill /PID %PID% /T /F
 | 
						|
 | 
						|
    REM Check if taskkill was successful
 | 
						|
    if %errorlevel% NEQ 0 (
 | 
						|
        echo Failed to stop %AppName% with PID %PID%. Error level: %errorlevel%
 | 
						|
    ) else (
 | 
						|
        echo %AppName% with PID %PID% has been stopped.
 | 
						|
    )
 | 
						|
) else (
 | 
						|
    echo %AppName% is already stopped or not running.
 | 
						|
)
 | 
						|
goto :eof
 | 
						|
 | 
						|
 | 
						|
:Restart
 | 
						|
call :Stop
 | 
						|
timeout /t 2 >nul
 | 
						|
call :Start
 | 
						|
goto :eof
 | 
						|
 | 
						|
:Status
 | 
						|
REM Check if the program is running using jps
 | 
						|
for /f "tokens=1" %%i in ('jps -l ^| findstr %AppName%') do set PID=%%i
 | 
						|
 | 
						|
if defined PID (
 | 
						|
    echo %AppName% is running with PID %PID%...
 | 
						|
) else (
 | 
						|
    echo %AppName% is not running...
 | 
						|
)
 | 
						|
goto :eof
 |