Plattformübergreifender Dämon / Dienst stoppen und starten

898
Anthony

Gibt es ein Tool, mit dem Daemons / Dienste plattformübergreifend gesteuert werden können?

Bei der Programmierung gibt es verschiedene Build-Tools, mit denen Sie Software auf verschiedenen Plattformen aus dem Quellcode erstellen können. Das Tool sorgt dafür, dass die Fähigkeiten der jeweiligen Maschine ermittelt werden und Bibliotheken, Compiler usw. lokalisiert werden. CMake ist ein Beispiel.

Es gibt ein ähnliches Problem bei der Steuerung von Daemon. Wenn ich einen Daemon starten möchte, kann ich je nach Betriebssystem verwenden

stop-start-daemon -S mydaemon 

oder vielleicht ein Skript aufrufen

/etc/init.d/mydaemon start 

oder wenn systemctldann das Werkzeug der Wahl ist

systemctl start mydaemon 

Und wenn ich unter Windows bin, könnte ich entweder net start myserviceoder verwenden sc start myservice.

Gibt es ein Werkzeug, Skript oder eine andere kanonische Methode, um dieses Szenario zu handhaben? Ich brauche keine feinkörnige Kontrolle. Stoppen und starten, aber ich möchte meine eigene Software auf mehreren Systemen mit demselben Skript bereitstellen können.

0
Hast du die Unterschiede, vielleicht kann ich etwas schreiben Felipe Alcacibar vor 9 Jahren 0

2 Antworten auf die Frage

3
txtechhelp

Um Ihre Frage direkt zu beantworten: Nein, es gibt keine plattformübergreifende Methode zum Starten / Stoppen / Steuern von Dämonen.

Um Ihre Frage indirekt zu beantworten: Die typische Art und Weise, wie dies gehandhabt wird, besteht darin, diese Art von Funktionalität in Ihr Programm und in Ihre Installer (Makefiles / Build-Dateien / MSI-Pakete / ZIP-Dateien) zu integrieren.

Wenn ich ein daemonisiertes Programm habe, das ich baue (ein Programm, das im Hintergrund oder als Dienst ausgeführt werden soll), baue ich die Start / Stopp-Skripte von Hand aus (mit ein paar hilfreichen Copy / Paste-Anweisungen) und zippen Sie dann Sie können entweder die Quell- oder die vorkompilierte Binärdatei mit dem Kontrollskript für die Auswahlplattform einrichten, das dann auf jeder Plattform auf die gleiche Weise aufgerufen wird (dh myservice -startoder myservice -stopusw. usw.).

0
CubicleSoft

Da ich dies selbst für meine eigenen Softwareprodukte benötige, entschied ich mich, es zu schreiben:

https://github.com/cubiclesoft/service-manager/

Es ist keine wirklich fehlerfreie Lösung, da jede Plattform eine eigene vorkompilierte Binärdatei benötigt. Die Oberfläche ist jedoch wesentlich konsistenter als die, die wir momentan haben. Service Manager ist wahrscheinlich am besten als Cross-Plattform - Dienst verwendet Deployment - Tool, das für die Bereitstellung Ihrer eigene Software, anstatt ein allgemeines Start / Stopp - Werkzeug, um Ihr letztere Bedürfnis entspricht. Das heißt, Sie schreiben Code, den Sie in einen Systemdienst umwandeln möchten, und macht die Bereitstellung auf anderen Computern unabhängig vom Betriebssystem einfach und zuverlässig.

Es kann jedoch auch zum Starten / Stoppen anderer Service Manager-fähiger Dienste verwendet werden. Solange alle Dienste, die Sie steuern möchten, unter Service Manager ausgeführt werden, können Sie diese Dienste mit einem einzigen Tool starten und stoppen.