Come creare un servizio che esegue un file .bat su Windows 2008 Server?


21

Ho creato il servizio usando

sc create myService binpath=myservice.bat

Ma quando lo avvio, non riesce con il seguente messaggio di errore:

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

Su Win2k3 ho usato srvany.exe dal Resource kit, ma non esiste un kit di risorse per win2k8. Per ora ho installato srvany.exe sul mio computer, ma non credo sia il modo migliore per farlo.

Grazie!


1
È possibile eseguire un file batch come servizio? Un'attività pianificata non sarebbe migliore? So che se si utilizza un vero servizio Windows, l'evento OnLoad deve tornare entro pochi secondi.
Tsilb,

Risposte:


9

Ovviamente non è possibile eseguire un servizio del genere. Hai provato a usare srvany nel server 2008? Per quanto ne so non esiste una versione "ufficiale" di srvany per s2k8, ma puoi sempre provare, no?

EDIT: Oh, ho dimenticato! Utilizziamo anche FireDaemon per eseguire applicazioni non di servizio come servizi. Tuttavia, non è gratuito e la sua funzionalità è un po 'troppo per le tue esigenze.


È quello che ho scritto che ho fatto.
Abyx,

hmm .. questo è strano. Mi è appena filtrato nel cervello. Scusate. Ad ogni modo, srvany sembra la cosa migliore da fare in questa situazione.
shylent,

srvany funziona nel 2008 (lo uso per installare ed eseguire Winamp.exe come servizio su un server principale) ... ma non è possibile eseguire solo un file bat.
Oskar Duveborn,

24

Utilizzare NSSM per eseguire un .BAT o qualsiasi vecchio file .EXE come servizio. È quasi un sostituto di SRVANY ed è un'applicazione senza fronzoli.

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

Ho avuto lo stesso problema, e NSSM era l'unica utility che funzionava.


3
Non ne avevo mai sentito parlare prima, ma sembra essere uno strumento prezioso. Grazie per il consiglio.
Skyhawk,

Grazie ha funzionato per me. Anche se sto ancora cercando opzioni per interrompere il servizio in un determinato momento.
Ankit

8

Utilizziamo l' Utilità di pianificazione per eseguire l'attività all'avvio del computer (indipendentemente dal fatto che un utente abbia effettuato l'accesso o meno)


1
per nascondere la finestra leggi questo o questo se non sei felice di correre come sistema
JonnyRaa,

7

Non puoi semplicemente eseguire un file .BAT o qualsiasi vecchio file .EXE come servizio. I servizi di Windows non ti funzionano. È possibile utilizzare un'utilità come NSSM ( Non-Sucking Service Manager ) o l'utilità SRVANY non libera di Microsoft per eseguire un programma arbitrario come servizio, ma è possibile che non si ottenga un comportamento di arresto molto "grazioso".


3

Il comando SC aggiunge semplicemente le voci di registro richieste per un servizio: se il file specificato non è un servizio valido, non lo trasformerà in uno.


2

da: questo post sui forum technet: http://social.technet.microsoft.com/Forums/en-US/winserverMigration/thread/98a97aee-c62b-4683-94ab-3777899cf7de/

Ecco cosa fare ...

Al momento della pubblicazione, non sono disponibili strumenti del Resource Kit di Windows Server 2008, quindi procurarsi "srvany.exe" dagli "Strumenti del Resource Kit di Windows Server 2003" e copiarlo in una posizione adatta sul server Win2008 (ad es. C: \ Windows \ System32 \). Usa "sc" per creare un nuovo servizio che avvia "srvany" (es. Sc create MyService binPath = C: \ Windows \ System32 \ srvany.exe DisplayName = "Il mio servizio personalizzato") Usando RegEdit: crea una chiave "Parametri" per il tuo servizio (ad es. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MyService \ Paramaters \) Utilizzando RegEdit: all'interno della chiave "Parametri" appena creata, crea un valore stringa chiamato "Applicazione" e inserisci il percorso completo dell'applicazione che desideri eseguire come un servizio. (Non sono richieste virgolette.)

E così dovrebbe andare.

Nota: alcune applicazioni memorizzano le loro impostazioni in un hive utente, non in HKEY_LOCAL_MACHINE, quindi sarà necessario eseguire l'applicazione per configurarlo, quindi configurare il servizio per essere eseguito come tale utente.


2

prova questo ... ha funzionato per me ..

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

Non ha funzionato anche per me! Stesso errore di OP - Non avviato in modo tempestivo.
Ravindra HV,

Idem - non ha funzionato.
Spedge

0

Mi sono imbattuto in questa cosa. Ecco lo strumento chiamato Bat_To_Exe_Converter. È molto semplice convertire qualsiasi file .bat in file .exe. Provalo. Scarica prima il downloader e scaricherà automaticamente Bat_To_Exe_Converter. Mi ha davvero aiutato a creare un servizio che esegue il mio file .bat tramite .exe. http://download.cnet.com/Bat-To-Exe-Converter/3001-2069_4-10555897.html?spi=eae5ab48292cc101b5f0ec370cf99ad0


Benvenuti in Server Fault! Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Scott Pack


0

Ho trovato altre due opzioni che non ti faranno raggiungere il tuo portafoglio.

Puoi avere il sclancio srvanyche poi punta al tuo programma. (c'è un post sul forum a cui non posso collegarmi perché non ho abbastanza rappresentante qui, anche se lo faccio su StackOverflow - grumble)

Ecco i passaggi utilizzati dal poster originale:

  1. Utilizzare scper creare un nuovo servizio che viene avviato srvany(ad es. sc create MyService binPath=C:\Windows\System32\srvany.exe DisplayName="My Custom Service")
  2. Usando RegEdit: crea una Parameterschiave per il tuo servizio (es. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\)
  3. Usando RegEdit: nella Parameterschiave appena creata , crea un valore stringa chiamato Applicatione inserisci il percorso completo dell'applicazione che desideri eseguire come servizio. (Non sono richieste virgolette.)

Se sembra un po 'un trucco , puoi creare un servizio .NET per avviare il tuo processo. Se vuoi saltare alcuni passaggi, ecco un servizio .NET open source in grado di avviare processi generici:

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

Modificalo in base alle tue esigenze, ma farà la maggior parte di ciò che vuoi fuori dalla scatola.


Ed è lo srvany di cui parli, quello di Win2k3 che non ha una versione supportata per Win2k8?
LarsH,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.