Gibt es eine festgelegte Konfigurationsdatei, um SubGit als Upstart-Dienst auszuführen?

387
sage

Es scheint, dass Upstart der richtige Weg ist, um Dinge während des Neustarts herunterzufahren und zu starten, aber ich konnte Konfigurationsdateien nicht finden, indem ich die SubGit-Dokumentation und eine allgemeine Suche im Web durchführte.

Die Start- und Stop-Befehle sind in meinem Fall so einfach wie folgt, aber sowohl der Benutzername als auch der Repo-Pfad hängen von der Benutzerinstallation ab:

sudo -u subgit subgit install /dev.git # start sudo -u subgit subgit uninstall /dev.git # stop 

Ich bin dabei, eine Arbeitskopie von /etc/init/subgit.conf zu implementieren (nicht zu verwechseln mit SVN_REPOS / conf / subgit.conf in SubGit) und werde ausstehende bessere Antworten posten.

Hinweis: SubGit ist eine bestimmte Implementierung von Bridging Subversion und Git.

0

1 Antwort auf die Frage

0
sage

Obwohl der Startbefehl einfach ist, ruft er ein Java-Programm auf, das sich scheinbar mehrfach zu verzahnen scheint und Probleme beim Start verursacht. Glücklicherweise johnjamesmiller veröffentlicht eine Abhilfe für diese Art von Problem zu Stackoverflow.

Während das Folgende den Upstart-Wrapper für die Instanz-parametrisierten Subgit-Befehle bereitstellt (wodurch mehrere Repos auf dem Server ausgeführt werden können), ist es bei Verwendung eines 'Instanz'-basierten Jobs nicht praktikabel, diesen Start / Stopp automatisch auszuführen. Stattdessen habe ich Startbefehle für meine Repos zu /etc/rc.local hinzugefügt (siehe unten).

# subgit.conf - subgit job file  description "service for running SubGit mirroring" author "Randy Sage"  # Note: because subgit forks too many times, normal upstart controls do not work # Instead, use the method at https://stackoverflow.com/a/12217085/527489  # Run with subgit/gitshare ids, since we use shared gitshare access to repos setuid subgit setgid gitshare  instance $repo  pre-start exec subgit install $repo # actually start  script # dummy process tracking java app while ps aux | grep "java.*$repo" | grep -v grep >/dev/null ; do sleep 1 done end script  post-stop script if ps aux | grep "java.*$repo" | grep -v grep >/dev/null ; then subgit shutdown $repo fi end script 

Hier sind die Befehle /etc/rc.local:

... start subgit repo=/matlab.git start subgit repo=/dev.git  exit 0 

Beachten Sie, dass Dienste, die auf diese Weise gestartet wurden, unter angezeigt werden initctl list, jedoch nicht service --status-all:

rsage@subgit:~$ initctl list | grep subgit subgit (/dev.git) start/running, process 2974 subgit (/matlab.git) start/running, process 2507