it-swarm.com.de

Führen Sie die Batchdatei als Windows-Dienst aus

Um eine Anwendung ausführen zu können, muss eine Batchdatei gestartet werden (was beispielsweise den Start von Jetty, das Anzeigen von Live-Protokollen usw.) ermöglicht. Die Anwendung funktioniert nur, wenn diese Batchdatei ausgeführt wird. Ich bin daher gezwungen, diese Batchdatei auszuführen und nicht vom Windows-Server abzumelden.

Kann diese Batchdatei als Dienst ausgeführt werden? Ich experimentiere mit einem der Vorschläge aus einer ähnlichen Frage .

125
publicRavi

NSSM ist völlig kostenlos und extrem einfach. Der Befehl Eingabeaufforderung/Terminal wird als Administrator ausgeführt:

nssm install "YourCoolServiceNameLabel"

daraufhin wird ein Dialogfeld angezeigt, in dem Sie auswählen können, wo sich die Datei befindet, die Sie ausführen möchten.

deinstallieren

nssm remove "YourCoolServiceNameLabel"
114
Junior M

Warum nicht einfach als geplante Task einrichten, die beim Start geplant ist?

58
Stephen Martin

Dazu gibt es ein eingebautes Windows-Kommando: sc create . Nicht so schick wie nssm, aber Sie müssen keine zusätzliche Software herunterladen.

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

Hinweis

  • start = demand bedeutet, dass Sie den Dienst selbst starten müssen
  • leerzeichen ist nach = erforderlich
  • Beim Start des Dienstes ist ein Fehler aufgetreten, dass der Dienst nicht rechtzeitig reagiert hat. Es war jedoch klar, dass der Dienst die .bat erfolgreich ausgeführt hat. Habe noch nicht hineingeschaut, aber dieser Thread hat dasselbe erlebt und es mit nssm gelöst, um den Dienst zu installieren.
6
w00ngy

Während es nicht kostenlos ist (aber $ 39), hat FireDaemon so gut für mich funktioniert, dass ich es empfehlen muss. Es wird Ihre Batch-Datei ausführen, verfügt jedoch über eine Menge zusätzlicher und sehr nützlicher Funktionen, wie z. B. Planung, Überwachung des Service-Ups, GUI- oder XML-basierte Installation von Diensten, Abhängigkeiten, Umgebungsvariablen und Protokollverwaltung. 

Ich begann mit FireDaemon, um JBoss-Anwendungsserver zu starten (run.bat), aber kurz darauf wurde mir klar, dass ich dank der reichhaltigen Konfigurationsfähigkeiten von FireDaemon die Batchdatei abschneiden und die Absicht ihrer Befehle in der FireDaemon-Service-Definition neu erstellen konnte .

Es gibt auch ein SUPER FireDaemon namens Trinity, das Sie sich ansehen sollten, wenn Sie über eine große Anzahl von Windows-Servern verfügen, auf denen dieser Dienst (oder technisch jeder Dienst) verwaltet werden soll.

3
Nicholas

Wie Doug Currie sagt, benutze RunAsService. 

Aus meiner bisherigen Erfahrung müssen Sie bedenken, dass der von Ihnen generierte Dienst dies tun wird 

  • haben einen völlig anderen Satz von Umgebungsvariablen
  • müssen sorgfältig auf Rechte/Berechtigungen geprüft werden 
  • dies kann zu Verwüstungen führen, wenn Dialoge geöffnet werden, die nach Eingaben fragen

ich bin mir nicht sicher, ob der letzte noch zutrifft ... es war eine große Nachtstute in einem Projekt, an dem ich vor einiger Zeit gearbeitet habe.

3
lexu

AlwaysUp führt die Batchdatei problemlos als Dienst aus. Es ist ähnlich wie FireDaemon (oben erwähnt) und ist nicht kostenlos, aber Sie können feststellen, dass die umfangreichen Funktionen in einer professionellen Umgebung eine Bereicherung darstellen.

Viel Glück!

0
CoreTech

Keine zusätzliche Software erforderlich. Verwenden Sie den Taskplaner -> Task erstellen -> ausgeblendet. Das Kontrollkästchen für ausgeblendet befindet sich in der linken unteren Ecke. Stellen Sie die Aufgabe so ein, dass sie bei der Anmeldung ausgelöst wird (oder welche Bedingung Sie auch immer mögen) und wählen Sie die Aufgabe auf der Registerkarte "Aktionen" aus. Wenn Sie es ausgeblendet ausführen, wird sichergestellt, dass die Aufgabe im Hintergrund wie ein Dienst ausgeführt wird.

Beachten Sie, dass Sie auch festlegen müssen, dass das Programm ausgeführt wird, "ob der Benutzer angemeldet ist oder nicht", oder das Programm wird weiterhin im Vordergrund ausgeführt.

0
Zediiiii