Я в настоящее время использую это.

@echo off

set serverName=Server Restarter
title %serverName%

:restart
TIMEOUT /T 900
taskkill /F /IM ServerLauncher.exe /T
goto restart

Редактировать:

Прямо сейчас у меня есть этот код на месте. Он автоматически перезагружает сервер через 15 минут. Но если он падает до этого срока. Это не перезапустит EXE. Вы должны подождать 15 минут, чтобы он перезагрузился снова.

Сервер аварийно завершает работу только тогда, когда процессор достигает примерно 10% использования процессора. Это заходит в тупик. Поэтому я ищу что-то такое, что всякий раз, когда загрузка ЦП достигает такого низкого уровня для конкретного процесса, для автоматического уничтожения и перезапуска. Есть идеи?

1 ответ1

0

Как прокомментировал mdpc выше, это скорее взлом / обходной путь, чем правильное решение, но вы просили об этом, так что вот так ...

@echo off
for /f "tokens=2 delims==" %%a in ('"wmic path Win32_PerfFormattedData_PerfProc_Process Where Name='Idle' get PercentProcessorTime /value 2>NUL | find /i "PercentProcessorTime""') do set usage=%%a
if %usage% LEQ 10 (
    echo Time to restart server!
) else (
    echo Not yet...
)

Я использовал процесс "Idle" в коде, поэтому вам нужно заменить его на имя вашего процесса (если вы не уверены, смотрите вывод wmic path Win32_PerfFormattedData_PerfProc_Process get Name).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .