Debian8(jessie)での自動起動とsvnの起動スクリプト

2017年11月30日

debianの自動起動にはいつのまにかinsservというのを使うことになっています。

$ sudo insserv -s

こんな感じに表示されます。

K:01:0 1 6:nginx
S:17:2 3 4 5:nginx

ランレベルが2 3 4 5 では起動し、0 1 6では起動しない、ということになります。

サービスへの追加と停止はこうする。

# 追加
$ sudo insserv -d nginx
# 削除
$ sudo insserv -r nginx

insserv に追加されないサービスの時

実はsvnは追加されなかった。
ので、ちょうどよいので、自前で起動スクリプトを作って登録する方法を書いておこう。

通常は/etc/init.dの下に起動スクリプトが生成されます。

svnのは作られなかったので・・・作ってみました。

svnserve というファイル名で/etc/init.dの下に配置しました。

#!/bin/bash
### BEGIN INIT INFO
# Provides:          svnserve
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: svnserve
### END INIT INFO

prog=svnserve
pidfile=/var/run/svnserve.pid
#svnserve=/usr/local/subversion/current/bin/svnserve
svnserve=/usr/bin/svnserve
RETVAL=0
ROOT=/var/svn
PORT=3691

start() {
        [ ! -f $pidfile ] || exit 1
        echo -n $"Starting $prog: "
        start-stop-daemon --start --quiet --pidfile $pidfile --make-pidfile --exec $svnserve -- -d -r $ROOT --listen-port $PORT
        RETVAL=$?
        echo start svnserve
        return $RETVAL
}

stop() {
        [ -f $pidfile ] || exit 1
        echo -n $"Stopping $prog: "
        start-stop-daemon --stop --exec $svnserve
        rm -f $pidfile
        RETVAL=$?
        echo stop svnserve
        return $RETVAL
}

# See how we were called.
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status $svnserve
        RETVAL=$?
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart}"
        RETVAL=1
esac

BEGIN INIT INFO という節がはじめに必要です。
起動させたいランレベルを書いておきます。通常は丸々コピーで良いでしょう。
また
ROOT=/var/svn
PORT=3691

と言う変数を用意して、ルートパスとポート番号を指定できるようにしました。
apacheをいれないつもりなのでhttp経由での接続は不可であるため、デフォルトの3690番は使わないほうがいいだろうとおもいます。

登録は簡単です。

$ sudo insserv svnserve

削除はこうです。

$ sudo insserv -r svnserve

確認はこう

$ sudo find /etc |grep svnserve
/etc/rc3.d/S01svnserve
/etc/rc4.d/S01svnserve
/etc/rc1.d/K01svnserve
/etc/rc2.d/S01svnserve
/etc/rc5.d/S01svnserve
/etc/rc6.d/K01svnserve
/etc/rc0.d/K01svnserve

 

試しに再起動してみて、ちゃんと起動しているか確かめます。

起動ユーザーはrootになりますよ。