Несмотря на то, что команда start проста, она вызывает Java-программу, которая, кажется, несколько раз разветвляется, вызывая проблемы с upstart. К счастью, johnjamesmiller опубликовал обходной путь для этого типа проблемы в StackOverflow.
В то время как следующее, кажется, обеспечивает оболочку для выскочки для параметризованных экземпляром команд subgit (позволяя запускать несколько репозиториев на сервере), использование задания на основе экземпляра делает нецелесообразным автоматический запуск / остановку. Вместо этого я добавил команды запуска для своих репозиториев в /etc/rc.local (показан внизу).
# 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
Вот команды /etc/rc.local:
... start subgit repo=/matlab.git start subgit repo=/dev.git exit 0
Обратите внимание, что службы, запущенные таким образом, отображаются под initctl list
, но не под service --status-all
:
rsage@subgit:~$ initctl list | grep subgit subgit (/dev.git) start/running, process 2974 subgit (/matlab.git) start/running, process 2507