У меня есть надоедливое программное обеспечение, которое дает сбой каждые несколько недель. Он состоит из двух компонентов. Служба A и служба B. Служба B переходит в странное состояние и перестает принимать соединения от службы A. Единственный выход - перезапустить обе службы вручную или перезагрузить сервер.
Я хотел бы запланировать перезапуск службы для A и B на регулярной основе. Говорить каждые 24 часа. Как это сделать?
Следуя предложениям в комментариях, я закончил тем, что создал командный файл, содержащий правильную последовательность перезапуска с таймаутами. Тайм-ауты были необходимы из-за зависимостей между службами. Я запланировал его запускать от имени администратора каждую ночь в 4 утра, используя планировщик задач.
net stop "Service B"
net stop "Service A"
timeout /T 10
net start "Service B"
timeout /T 10
net start "Service A"
Это не идеально, но подойдет для этого сценария - развертывание удаленного рабочего стола с менее чем 10 пользователями.
Вместо создания файла bat, который может быть поврежден или отсутствовать, вы можете создать запланированное задание с помощью множественный действия. Одно действие останавливает службу, а другое - перезапускает службу. Оба выполнены с NET
команда. Дайте им аргументы STOP и START, за которыми следует имя службы.
NET STOP "Service A"
NET START "Service A"
Вот сообщение на StackOverflow, объясняющее, как это сделать.
Net Stop "ServiceName" && Net Start "ServiceName"
И вы можете объединить в цепочку && для Stop / Start ServiceB
Net Stop "ServiceA" && Net Start "ServiceA" && Net Stop "ServiceB" && Net Start "ServiceB"
Вы можете создать файл летучей мыши и попробовать что-то в этом роде:
чистая остановка {serviceName} и чистый старт {serviceName}
и использовать bat-файл как программу для запланированного задания.