Як створити службу, що працює з файлом .bat на сервері Windows 2008?


21

Я створив службу за допомогою

sc create myService binpath=myservice.bat

Але коли я запускаю його, воно не працює із таким повідомленням про помилку:

[SC] StartService FAILED 1053:
    The service did not respond to the start or control request in a timely fashion.

У Win2k3 я використовував srvany.exe з Resource kit, але для win2k8 немає набору ресурсів. На даний момент я встановив srvany.exe на своїй машині, але не думаю, що це найкращий спосіб зробити це.

Спасибі!


1
Ви можете запустити пакетний файл як послугу? Чи не було б краще заплановане завдання? Я знаю, що якщо ви використовуєте фактичну службу Windows, подія OnLoad повинна повернутися протягом декількох секунд.
— tsilb

Відповіді:


9

Звичайно, ви не можете запустити таку послугу. Ви намагалися використовувати srvany на сервері 2008? Наскільки я знаю, немає офіційної версії srvany для s2k8, але ви завжди можете спробувати, чи не так?

РЕДАКТ: О, я забув! Також ми використовуємо FireDaemon для запуску несервісних додатків як служб. Хоча це і не безкоштовно, і його функціональність трохи забагато для ваших потреб.


Що я написав, що і зробив.
— abyx

хм .. це дивно. Він просто фільтрувався прямо через мій мозок. Вибачте. Так чи інакше, srvany здається найкращим у цій ситуації.
— shylent

srvany працює у 2008 році (я використовую його для встановлення та запуску Winamp.exe як сервісу на домашньому сервері) ... але ви не можете запустити лише bat файл.
— Оскар Дувеборн

24

Використовуйте NSSM для запуску .BAT або будь-якого старого файлу .EXE в якості служби. Це майже заміна для SRVANY і це додаток без суєти та суєти.

http://iain.cx/src/nssm/

У мене була така ж проблема, як у вас, і NSSM була єдиною утилітою, яка працювала.


3
Я про це раніше не чув, але це, здається, є цінним інструментом. Дякую за пораду.
— Skyhawk

Дякую, що це працювало на мене. Хоча я все ще шукаю варіанти зупинити послугу у визначений час.
— Анкіт

8

Ми використовуємо Планувальник завдань для запуску завдання під час запуску комп'ютера (незалежно від того, користувач увійшов чи ні)


1
щоб приховати вікно, прочитати це чи це, якщо ти не радий працювати як система
— JonnyRaa

7

Ви не можете просто запустити .BAT файл або будь-який старий файл .EXE як службу. Служби Windows не працюють для вас. Ви можете використовувати утиліту, наприклад, не- всмоктуючий сервіс-менеджер (NSSM) або невільну утиліту SRVANY від Microsoft, щоб запустити довільну програму як послугу, але ви можете виявити, що у вас не дуже "витончена" поведінка зупинки.


3

Команда SC просто додає необхідні записи реєстру для послуги - якщо вказаний вами файл не є дійсним сервісом exe, він не перетворить його в один.


2

від: це повідомлення на форумах технологій: http://social.technet.microsoft.com/Forums/en-US/winserverMigration/thread/98a97aee-c62b-4683-94ab-3777899cf7de/

Ось що робити ...

На момент цієї публікації не існує Інструментів набору ресурсів Windows Server 2008, тому дістаньте "srvany.exe" з "Інструментів набору ресурсів Windows Server 2003" та скопіюйте її у відповідне місце на сервері Win2008 (наприклад, C: \ Windows \ System32 \). Використовуйте "sc", щоб створити нову службу, яка запускає "srvany" (наприклад, sc створити MyService binPath = C: \ Windows \ System32 \ srvany.exe DisplayName = "Моя спеціальна служба") За допомогою RegEdit: створіть для вашої клавіші "Параметри" сервіс (наприклад, HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MyService \ Paramaters \) За допомогою RegEdit: в новоствореній клавіші "Параметри" створіть значення рядка під назвою "Application" та введіть повний шлях до програми, яку ви хочете запустити послуга. (Цитати не потрібні.)

І це має робити.

Примітка: деякі програми зберігають свої налаштування у вулику користувача, а не під HKEY_LOCAL_MACHINE, тому вам потрібно буде запустити програму, щоб налаштувати її, а потім налаштувати службу для запуску як цього користувача.


2

спробуйте це ... це працювало для мене ..

sc create ServiceTest binpath= "C:\Windows\System32\cmd.exe /C C:\ServiceTest\Jenkins-Slave.bat"

Це не працювало і для мене! Та ж помилка, що і ОП - Не почався своєчасно.
— Равіндра HV

Дітто - не вийшло.
— Шпег

0

Я натрапив на цю річ. Ось інструмент під назвою Bat_To_Exe_Converter. Конвертувати будь-які .bat файли в .exe файли дуже просто. Спробуй це. Спочатку завантажте завантажувач, і він автоматично завантажить Bat_To_Exe_Converter. Це дійсно допомогло мені створити сервіс, який запускає мій файл .bat через .exe. http://download.cnet.com/Bat-To-Exe-Converter/3001-2069_4-10555897.html?spi=eae5ab48292cc101b5f0ec370cf99ad0


Ласкаво просимо до помилки сервера! Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
— Скотт Пак


0

Я знайшов ще два варіанти, за якими ви не дотягнетесь до свого гаманця.

Ви можете scзапустити запуск, srvanyякий потім вказує на вашу програму. (є повідомлення на форумі, до якого я не можу зв’язатись, тому що у мене тут недостатньо представників, хоча я і в StackOverflow - бурчить)

Ось кроки, якими користувався оригінальний плакат:

  1. Використовуйте scдля створення нової послуги, яка запускається srvany(наприклад sc create MyService binPath=C:\Windows\System32\srvany.exe DisplayName="My Custom Service")
  2. Використання RegEdit: створити Parametersключ для вашої послуги (наприклад HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\)
  3. Використання RegEdit: в новоствореному Parametersключі створіть значення рядка, яке називається, Applicationі введіть повний шлях до програми, яку ви хочете запустити як послугу. (Цитати не потрібні.)

Якщо це здається чимось злому , то ви можете створити сервіс .NET для запуску вашого процесу. Якщо ви хочете пропустити кілька кроків, ось сервіс з відкритим кодом .NET, який може запускати загальні процеси:

http://www.codeproject.com/KB/system/xyntservice.aspx

Налаштуйте його під свої потреби, але це зробить більшу частину того, що ви хочете, з коробки.


А чи є серван, який ви згадуєте, той з Win2k3, який не підтримує версію для Win2k8?
— LarsH
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.