Esegui il file batch come servizio di Windows

Per eseguire un’applicazione, è necessario avviare un file batch (che fa cose come start Jetty, visualizzare i log live ecc.). L’applicazione funzionerà solo se questo file batch è in esecuzione. Sono quindi costretto ad avere questo file batch in esecuzione e non uscire dal server Windows.

Questo file batch può essere eseguito come un servizio? Sto sperimentando uno dei suggerimenti di una domanda simile .

NSSM è totalmente gratuito e iper-facile, con prompt dei comandi / terminale come amministratore:

nssm install "YourCoolServiceNameLabel" 

quindi apparirà una finestra di dialogo in modo da poter scegliere dove si trova il file che si desidera eseguire.

disinstallare

 nssm remove "YourCoolServiceNameLabel" 

Perché non configurarlo semplicemente come un’attività pianificata che è pianificata per essere eseguita all’avvio?

Come dice Doug Currie, usa RunAsService.

Dalla mia esperienza passata devi ricordare che il servizio che generi genererà

  • avere un insieme completamente diverso di variabili d’ambiente
  • devono essere attentamente controllati per problemi relativi a diritti / permessi
  • potrebbe causare il caos se apre le windows di dialogo che richiedono qualsiasi tipo di input

non sono sicuro che l’ultimo sia ancora valido … è stata una grande cavalla della notte in un progetto a cui ho lavorato qualche tempo fa.

Anche se non è gratuito (ma $ 39), FireDaemon ha funzionato così bene per me che devo raccomandarlo. Verrà eseguito il tuo file batch, ma ha un sacco di funzionalità aggiuntive e molto utili come la pianificazione, il monitoraggio del servizio, l’installazione basata su GUI o XML di servizi, dipendenze, variabili ambientali e gestione dei registri.

Ho iniziato a utilizzare FireDaemon per avviare i server delle applicazioni JBoss ( run.bat ) ma poco dopo ho capito che la ricchezza delle funzionalità di configurazione di FireDaemon mi permetteva di abbandonare il file batch e ricreare l’intento dei suoi comandi nella definizione del servizio FireDaemon.

C’è anche un SUPER FireDaemon chiamato Trinity che potresti voler vedere se hai un gran numero di server Windows su cui gestire questo servizio (o tecnicamente, qualsiasi servizio).

C’è un built-in di Windows CMD per fare questo: sc creare . Non è elegante come nssm, ma non devi scaricare un ulteriore software.

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

Nota

  • start = richiesta significa che devi avviare il servizio da solo
  • lo spazio bianco è richiesto dopo =
  • Ho riscontrato un errore all’avvio del servizio che il servizio non ha risposto in modo tempestivo, ma era chiaro che il servizio aveva eseguito correttamente .bat. Non ho ancora risolto questo problema, ma questo thread ha avuto la stessa esperienza e l’ho risolto usando nssm per installare il servizio.

AlwaysUp eseguirà facilmente il tuo file batch come un servizio. È simile a FireDaemon (menzionato sopra) e non è gratuito, ma è ansible trovare il ricco set di funzionalità come risorsa in un ambiente professionale.

In bocca al lupo!