Планирование запуска сервиса после другого сервиса
У меня есть сервис, который нужно запустить только ПОСЛЕ другого сервиса. Есть ли способ настроить службу так, чтобы она запускалась только после завершения запуска другой?
Очевидно, я мог бы использовать отложенный запуск или написать пакетный скрипт, чтобы сделать это, но они оба грязные / временные решения. Так что я подумал, могу ли я запланировать, чтобы это произошло как-нибудь?
Это можно сделать?
4 ответа
По моему опыту, лучший способ создания сервисных зависимостей, без рытья в реестре (что не является безопасным, безопасным или легко поддающимся скрипту == повторяющимся), - это использовать SC.exe - утилиту управления службами, включенную в каждую версию Windows, так как Win2003.
Вы можете открыть командное окно и набрать sc
чтобы получить полную помощь, но суть ее в следующем:
sc create newservice binpath= c:\nt\system32\newserv.exe type= own start= auto depend= "netbios"
Создает новый сервис с именем "newservice", указывает на его путь, автоматически запускает его и делает его зависимым от сервиса NetBIOS.
Узнайте больше о SC здесь.
Вы должны использовать редактор реестра (насколько я знаю), чтобы сервис зависел от другого сервера. Найдите зависимую службу в HKLM\SYSTEM\CurrentControlSet\services
и добавить REG_MULTI_SZ
значение называется DependOnService
, Введите в качестве значения имя службы (не отображаемое имя, но то же имя, что и его ключ reg).
Когда вы перезагрузите компьютер сейчас, Windows запустит зависимую службу только после запуска службы, от которой вы ее зависели. Аналогично, если служба, от которой она зависит, не запускается, ваша зависимая служба также не запустится.
Если служба правильно развернута в веб-контейнере, при запуске tomcat она автоматически запускает службу, как и любое другое веб-приложение. Помните, что веб-сервис, развернутый в веб-контейнере, - это не что иное, как сервис, заключенный в сервлет, который ищет SOAP-запрос по HTTP, как любой другой сервлет.
Вы можете сделать второй сервис зависимым от первого сервиса, а затем запустить второй сервис вместо первого сервиса. Windows удостоверится, что первая служба запущена перед запуском второй службы.