Вы можете создать задачу, которая вызывает на события, но конфиг событие, чтобы вызвать при остановке службы не легко.
Другая точка зрения
Вы можете установить запланированное задание, чтобы запустить пакетный скрипт, чтобы проверить, если служба запущена. Если это не так, он запустит его.
@echo off
SetLocal EnableDelayedExpansion
set "user=username"
set "[email protected]"
set "host=server_name"
set "OracleServiceTime=3"
set "OracleServiceTask=CheckOracle"
set "OracleServiceName=the_name_of_the_service"
rem schtasks /query /TN "%OracleServiceTask%" /S "%host%" >NUL 2>&1
schtasks /query /TN "%OracleServiceTask%" >NUL 2>&1
if %ERRORLEVEL% EQU 1 (
rem schtasks /create /SC MINUTE /MO %OracleServiceTime% /TN "%OracleServiceTask%" /RL HIGHEST /TR "%~dpnx0" /S "%host%" /RU "%user%" /RP "%pass%" /F >NUL 2>&1
schtasks /create /SC MINUTE /MO %OracleServiceTime% /TN "%OracleServiceTask%" /RL HIGHEST /TR "%~dpnx0" /F >NUL 2>&1
if !ERRORLEVEL! NEQ 0 (
rem if task couldn't be created, message user or whatever.
)
)
tasklist /FI "imagename eq %OracleServiceName%" | find /I "RUNNING" > NUL 2>&1
if %ERRORLEVEL% EQU 0 goto :EOF
rem sc "\\%host%" start "%OracleServiceName%" > NUL 2>&1
sc start "%OracleServiceName%" > NUL 2>&1
if %ERRORLEVEL% NEQ 0 (
rem if service couldn't be started, message user or whatever.
)
EndLocal
exit/B
Эта проверка скрипта, если задача существует, если она не затем создать его (в этом случае, чтобы запустить каждые 3 минуты)
Затем проверьте, если служба запущена, и, если нет, Начни это.
Есть две командные строки для schtask /create
и sc start
. Если сценарий может работать на удаленной системе, вам понадобится синтаксис host user pass
.
net start OracleServiceCTGINST1 –
Вы можете создать запланированную задачу, запускаемую для перезапуска остановленной службы, или задачу, которая запускает пакет для проверки состояния службы с определенным интервалом. – elzooilogico
Как вы поживаете с нижеследующим ответом, Омер? – halfer