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