Como iniciar o git-daemon na inicialização?

0

Eu criei scripts para controlar iniciar, parar, etc. do meu git-daemon no Fedora28. Agora estou tentando vincular esses scripts a um serviço systemd para que o git-daemon esteja disponível após a reinicialização.

O script principal (gitT) é ...

#!/bin/bash
case "$1" in
  'start')
    echo "Starting git-daemon"
    /home/git/scripts/start.sh >> /home/git/gitT.log
    ;;
  'stop')
    echo "Stopping git-daemon"
    /home/git/scripts/stop.sh >> /home/git/gitT.log
    ;;
  'restart')
    echo "Bouncing git-daemon"
    /home/git/scripts/bounce.sh >> /home/git/gitT.log
    ;;
  'status')
    echo "Status of git-daemon"
    /home/git/scripts/status.sh
    ;;
  *)
    echo "'basename $0': usage: 'basename $0' { stop | start | restart | status }"
    ;;
esac

Scripts secundários são ...

start.sh

#!/bin/bash
# --------------------------
echo "---------------------"
/usr/bin/git daemon --export-all --enable=receive-pack --verbose --pid-file=/home/git/git-daemon.pid --base-path=/home/git/repos >> /home/git/git-daemon.out 2>> /home/git/git-daemon.err &
echo "---------------------"
echo "STARTED at 'date'"

stop.sh

#!/bin/bash
# --------------------------
echo "---------------------"
pkill -F /home/git/git-daemon.pid
echo "---------------------"
echo "STOPPED at 'date'"

bounce.sh

#!/bin/bash
# --------------------------
echo "====================="
/home/git/scripts/stop.sh
echo "====================="
sleep 5
echo "====================="
/home/git/scripts/start.sh
echo "====================="
echo "BOUNCED"

e status.sh

#!/bin/bash
# --------------------------
echo "====================="
ps -x --forest
echo "====================="

Finalmente eu criei um arquivo de serviço (git-daemon.service) ...

[Unit]
Description=Git Daemon
Documentation=man:git-daemon(1)
ConditionPathExists=/home/git/repos

[Service]
Type=oneshot
ExecStart=/bin/bash /home/git/gitT start
ExecStop=/bin/bash /home/git/gitT stop
RemainAfterExit=yes
User=git
Group=git

[Install]
WantedBy=multi-user.target

Então eu configuro com esses comandos ...

cp /home/git/git-daemon.service /etc/systemd/system
systemctl enable git-daemon.service

Agora, se eu executar gitT start como o usuário git, tudo começa bem. Mas eu corro systemctl start git-daemon como root, esse é o erro ...

fatal: base-path '/home/git/repos' does not exist or is not a directory
    
por dacracot 19.05.2018 / 02:06

1 resposta

0

Você criou um sistema que é significativamente mais complicado de depurar que a necessidade de duplicar um número de partes da funcionalidade systemd em scripts de shell desnecessários. systemd tem recursos integrados para iniciar, parar e reiniciar serviços, fornecer seu status e manipular sua saída.

Ao remover essa camada de complexidade, você terá eliminado uma área de superfície significativa onde os bugs podem existir e estará muito mais perto de resolver o problema.

Eu recomendo usar um dos modelos já publicados on-line para gerenciar git-daemon com o systemd se o seu sistema ainda não enviar um.

Referências

por 21.05.2018 / 22:16