Windows Service fails to start when the service is already running using windows batch script

不想你离开。 提交于 2019-12-11 16:05:30

问题


I am writing a windows batch script that will Install a service. If its already running, then I am stopping and deleting the service and then installing the service again.

I am facing a peculiar behavior. When the service is already running, and when I am running the below batch file, the service gets installed again, but it fails to start. When I reboot the system, and start the service, it gets started.

How to solve this start service issue without rebooting computer. I also added taskkill /f /PID to kill the process libertyserver.exe.

This is my code : test.bat. I am running test.bat from command line.

test.bat:

@echo off
setlocal

@echo off

set JAVA_SERVICE_EXE=libertyserver.exe
...
....
set SERVICE_DISPLAY_NAME="%LIBERTY_SERVICE_NAME%"
set SERVICE_DESCRIPTION="%LIBERTY_SERVICE_NAME%"

echo Stopping and Deleting existing services

for /F "tokens=3 delims=: " %%H in ('sc query %SERVICE_NAME% ^| findstr "STATE" ') do (
  if /I "%%H" EQU "RUNNING" (
   sc stop %SERVICE_NAME% >nul 2>&1
   timeout /t 30 /nobreak >nul 2>&1
  )

sc delete %SERVICE_NAME% >nul 2>&1
  timeout /t 30 /nobreak >nul 2>&1
)

for /f "tokens=2" %%a in ('tasklist^|find /i "libertyserver.exe"') do (taskkill.exe /f /pid %%a >nul 2>&1)

echo Installing liberty profile %SERVICE_NAME%

set INSTALL_SERVICE_COMMAND=%DAEMON_EXEC% //IS//%SERVICE_NAME% --Startup=manual --DisplayName=%SERVICE_DISPLAY_NAME% --Description=%SERVICE_DESCRIPTION% ++DependsOn=Tcpip --LogPath=%LOG_PATH% --StdOutput=auto --StdError=auto --StartMode=exe --StartPath=%SERVER_START_COMMAND_PATH% --StartImage=%SERVER_START_COMMAND% --StartParams=start#SIServer --StopMode=exe --StopPath=%SERVER_STOP_COMMAND_PATH% --StopImage=%SERVER_STOP_COMMAND% --StopParams=stop#SIServer
%INSTALL_SERVICE_COMMAND%

echo Installed liberty profile %SERVICE_NAME%

来源:https://stackoverflow.com/questions/47299637/windows-service-fails-to-start-when-the-service-is-already-running-using-windows

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!