起動時に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-daemonrootとして実行していますが、エラーが発生しました。

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

ベストアンサー1

作成したシステムをデバッグするのははるかに複雑で、不要なsystemdシェルスクリプトに必要なものよりも作成したシステムの大部分をコピーする必要がありますsystemd。サービスの開始、停止、再開、状態の提供、および出力処理のための組み込み機能があります。

これらの複雑さのレイヤーを削除すると、エラーが発生する可能性がある重要なサーフェス領域が削除され、トラブルシューティングに近づく可能性があります。

管理のためにオンラインで公開された既存のテンプレートの1つを使用することをお勧めします。git-daemonシステムにまだ公開されているテンプレートがない場合

引用する

おすすめ記事