Як створити службу, що працює з файлом .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.