it-swarm.com.ru

Запустить пакетный файл как службу Windows

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

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

125
publicRavi

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

nssm install "YourCoolServiceNameLabel"

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

удалить

nssm remove "YourCoolServiceNameLabel"
114
Junior M

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

58
Stephen Martin

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

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

Заметка

  • start = demand означает, что вы должны запустить службу самостоятельно
  • пробел необходим после =
  • Я обнаружил ошибку при запуске службы, что служба не ответила своевременно, но было ясно, что служба успешно запустила .bat. Еще не копался в этом, но этот поток испытал то же самое и решил это с помощью nssm для установки службы.
6
w00ngy

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

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

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

3
Nicholas

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

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

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

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

3
lexu

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

Удачи!

0
CoreTech

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

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

0
Zediiiii