Кажется, что выскочка - это правильный способ завершить работу и запустить ее во время процесса перезагрузки, но мне не удалось найти файлы конфигурации с поиском документации 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.

1 ответ1

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .