Существует ли установленный файл конфигурации для запуска SubGit в качестве службы upstart?

264
sage

Кажется, что выскочка - это правильный способ завершить работу и запустить ее во время процесса перезагрузки, но мне не удалось найти файлы конфигурации с поиском документации SubGit и общим поиском в Интернете.

Команды запуска и остановки в моем случае так же просты, как указано ниже, но как имя пользователя, так и путь репо зависят от установки пользователя:

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

Я собираюсь реализовать рабочую копию /etc/init/subgit.conf (не путать с SVN_REPOS / conf / subgit.conf в SubGit) и опубликую в ожидании лучших ответов.

Примечание: SubGit - это конкретная реализация мостов Subversion и Git.

0

1 ответ на вопрос

0
sage

Несмотря на то, что команда 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