Запустить пакетный файл как службу Windows - PullRequest
136 голосов
/ 06 января 2009

Чтобы запустить одно приложение, необходимо запустить пакетный файл (который запускает Jetty, отображает живые журналы и т. Д.). Приложение будет работать, только если этот пакетный файл запущен. Поэтому я вынужден запускать этот пакетный файл, а не выходить из него с сервера Windows.

Может ли этот пакетный файл быть запущен как сервис? Я экспериментирую с одним из предложений аналогичного вопроса .

Ответы [ 7 ]

125 голосов
/ 08 ноября 2012

NSSM абсолютно бесплатен и очень прост, запускает командную строку / терминал от имени администратора:

nssm install "YourCoolServiceNameLabel"

, затем появится диалоговое окно, чтобы вы могли выбрать, где находится файл, который вы хотите запустить.

чтобы удалить

nssm remove "YourCoolServiceNameLabel"
58 голосов
/ 07 января 2009

Почему бы просто не настроить его как запланированную задачу, запуск которой запланирован при запуске?

10 голосов
/ 25 июля 2018

Для этого есть встроенный Windows cmd: sc create . Не так красиво, как nssm, но вам не нужно загружать дополнительное программное обеспечение.

sc create "ServiceName" start= demand displayname= "DisplayName" binpath= [path to .bat file]

Примечание

  • запуск = спрос означает, что вы должны запустить службу самостоятельно
  • пробел необходим после =
  • Я обнаружил ошибку при запуске службы, что служба не ответила своевременно, но было ясно, что служба успешно запустила .bat. Еще не копался в этом, но этот поток испытал то же самое и решил это, используя nssm для установки службы.
3 голосов
/ 06 января 2009

Хотя это не бесплатно (но $ 39), FireDaemon так хорошо работает для меня, я должен рекомендовать его. Он запускает ваш пакетный файл, но имеет множество дополнительных и очень полезных функций, таких как планирование, мониторинг обслуживания, установка сервисов на основе графического интерфейса или XML, зависимости, переменные среды и управление журналами.

Я начал использовать FireDaemon для запуска серверов приложений JBoss ( run.bat ), но вскоре понял, что богатство возможностей конфигурации FireDaemon позволило мне отказаться от пакетного файла и воссоздать назначение его команд. в определении сервиса FireDaemon.

Существует также SUPER FireDaemon под названием Trinity, на который вы, возможно, захотите посмотреть, если у вас есть большое количество серверов Windows, на которых можно управлять этой службой (или технически любой службой).

3 голосов
/ 06 января 2009

Как говорит Дуг Керри, используйте RunAsService.

Из моего прошлого опыта вы должны помнить, что созданная вами Служба будет

  • имеет совершенно другой набор переменных окружения
  • должны быть тщательно проверены на предмет наличия прав / разрешений
  • может привести к хаосу, если он откроет диалоговое окно с просьбой о вводе любого типа

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

1 голос
/ 18 ноября 2018

Нет необходимости в дополнительном программном обеспечении. Используйте планировщик задач -> создать задачу -> скрытый. Флажок для скрытого находится в левом нижнем углу. Задайте задачу для запуска при входе в систему (или при любых других условиях) и выберите задачу на вкладке действий. Скрытый запуск гарантирует, что задача выполняется в фоновом режиме, как служба.

Обратите внимание, что вы также должны настроить запуск программы "вне зависимости от того, вошел пользователь в систему или нет", иначе программа все равно будет работать на переднем плане.

0 голосов
/ 22 июля 2010

AlwaysUp легко запустит ваш пакетный файл как сервис. Он похож на FireDaemon (упомянутый выше) и не является бесплатным, но вы можете найти богатый набор функций для профессиональной среды.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...