Embora o comando de início seja simples, ele chama um programa java que parece ser interrompido várias vezes, causando problemas de inicialização. Felizmente, o johnjamesmiller publicou uma solução alternativa para esse tipo de problema no StackOverflow.
Embora o seguinte pareça fornecer wrapper de inicialização para os comandos de subgit parametrizados por instância (permitindo que vários repos sejam executados no servidor), o uso de um job baseado em 'instance' torna impraticável ter esse start / stop automaticamente. Em vez disso, adicionei comandos start para meus repositórios para /etc/rc.local (mostrados na parte inferior).
# 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
Aqui estão os comandos /etc/rc.local:
...
start subgit repo=/matlab.git
start subgit repo=/dev.git
exit 0
Observe que os serviços iniciados dessa forma aparecem em initctl list
, mas não em service --status-all
:
rsage@subgit:~$ initctl list | grep subgit
subgit (/dev.git) start/running, process 2974
subgit (/matlab.git) start/running, process 2507