Запуск пакетного файла в качестве службы 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 (упомянутый выше) и не является бесплатным, но вы можете найти богатый набор функций как ресурс в профессиональной среде.

Удачи!