Запуск пакетного файла в качестве службы Windows
Чтобы запустить одно приложение, необходимо запустить командный файл (что делает такие вещи, как запуск Jetty, отображение живых журналов и т.д.). Приложение будет работать только в том случае, если этот командный файл запущен. Поэтому я вынужден запустить этот командный файл, а не выйти из сервера Windows.
Можно ли запустить этот командный файл как службу? Я экспериментирую с одним из предложений из аналогичного вопроса.
Ответы
Ответ 1
NSSM является абсолютно бесплатным и сверхлегким, запуская командную строку/терминал как администратор:
nssm install "YourCoolServiceNameLabel"
появится диалоговое окно, чтобы вы могли выбрать, где находится файл, который вы хотите запустить.
для удаления
nssm remove "YourCoolServiceNameLabel"
Ответ 2
Почему бы просто не настроить его как запланированную задачу, которую планируется запустить при запуске?
Ответ 3
Как говорит Дуг Карри, использование RunAsService.
Из моего прошлого опыта вы должны помнить, что Служба, которую вы создаете, будет
- имеют совершенно другой набор переменных среды
- должны быть тщательно проверены на проблемы с правами/разрешениями.
- может вызвать хаос, если он открывает диалоговые окна с запросом на любой вход
не уверен, что последний применяется... это была одна большая ночная кобыла в проекте, над которым я работал некоторое время назад.
Ответ 4
Для этого нужно создать встроенный windows cmd: sc create. Не так интересно, как nssm, но вам не нужно загружать дополнительную часть программного обеспечения.
sc create "ServiceName" start= demand displayname= "DisplayName" binpath= [path to .bat file]
Заметка
- start = demand означает, что вы должны начать обслуживание самостоятельно
- пробел требуется после
=
- Я столкнулся с ошибкой при запуске службы, что служба не ответила своевременно, но было ясно, что служба успешно запускала.bat. Не впились в это, но эта тема испытала то же самое и решила его, используя nssm для установки службы.
Ответ 5
Пока он не бесплатный (но $39), FireDaemon работал так хорошо для меня, я должен рекомендовать его. Он будет запускать ваш пакетный файл, но имеет множество дополнительных и очень полезных функций, таких как планирование, мониторинг обслуживания, графический интерфейс или XML-установка служб, зависимостей, переменных окружения и управления журналами.
Я начал использовать FireDaemon для запуска серверов приложений JBoss (run.bat), но вскоре понял, что богатство возможностей конфигурации FireDaemon позволило мне отбросить пакетный файл и воссоздать намерение его команд в определении службы FireDaemon.
Также есть SUPER FireDaemon, называемый Trinity, который вы можете посмотреть, если у вас есть большое количество серверов Windows, на которых можно управлять этой услугой (или технически, любой службой).
Ответ 6
AlwaysUp будет легко запускать ваш пакетный файл в качестве службы. Он похож на FireDaemon (упомянутый выше) и не является бесплатным, но вы можете найти богатый набор функций как ресурс в профессиональной среде.
Удачи!