부팅 시 git-daemon을 시작하는 방법은 무엇입니까?

부팅 시 git-daemon을 시작하는 방법은 무엇입니까?

Fedora28에서 git 데몬의 시작, 중지 등을 제어하는 ​​스크립트를 만들었습니다. 이제 재부팅 후 git-daemon을 사용할 수 있도록 이 스크립트를 systemd 서비스에 연결하려고 합니다.

메인 스크립트(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

도우미 스크립트는 다음과 같습니다.

시작 파일

#!/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`"

중지 명령

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

바운스.sh

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

그리고 status.sh

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

마지막으로 서비스 파일(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

그런 다음 다음 명령으로 설정했습니다 ...

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

이제 gitT startgit 사용자로 실행하면 모든 것이 잘 작동하기 시작합니다. 하지만 systemctl start git-daemon루트로 실행 중인데 오류가 발생했습니다.

fatal: base-path '/home/git/repos' does not exist or is not a directory

답변1

생성한 시스템을 디버깅하는 것은 훨씬 더 복잡하며 systemd불필요한 쉘 스크립트에 필요한 것보다 생성한 시스템의 많은 부분을 복사해야 합니다 systemd. 서비스 시작, 중지, 다시 시작, 상태 제공 및 출력 처리를 위한 기본 제공 기능이 있습니다.

이러한 복잡성 계층을 제거하면 오류가 존재할 수 있는 중요한 표면 영역을 제거하고 문제 해결에 더 가까워질 수 있습니다.

관리를 위해 온라인에 게시된 기존 템플릿 중 하나를 사용하는 것이 좋습니다. git-daemon시스템에 아직 게시된 템플릿이 없는 경우

인용하다

관련 정보