ksaitoの日記

日々試したことの覚え書き

Subversion

移転しました。

自動的にリダイレクトします。

start-stop-daemonを使ってSubversionsvnserve自動起動するように設定しましたが、start-stop-daemonではなぜか起動したプロセスを停止できませんでした。
仕方なく下記のようなスクリプトを準備しました。

$ cat /etc/init.d/svnserve
#! /bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/svnserve
DAEMON_OPTS="-d -r /var/subversion"
NAME=svnserv
DESC="Subversion server."
USER=svn
PIDFILE=/var/run/$NAME.pid

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

start_puppet() {
#       start-stop-daemon --start --quiet --pidfile $PIDFILE \
#               --user $USER --group $USER --exec $DAEMON -- $DAEMON_OPTS
        sudo -u $USER $DAEMON $DAEMON_OPTS
        if [ "$?" -eq 0 ]
        then
                pidof $DAEMON > $PIDFILE
        fi
}

stop_puppet() {
#       start-stop-daemon --stop  --quiet --pidfile $PIDFILE \
#               --user $USER --group $USER --signal 9 --exec $DAEMON
        kill -9 `cat $PIDFILE`
        rm -f $PIDFILE
}

case "$1" in
    start)
        log_begin_msg "Starting $DESC"
        start_puppet
        log_end_msg 0
        ;;
    stop)
        log_begin_msg "Stopping $DESC"
        stop_puppet
        log_end_msg 0
        ;;
  restart|force-reload)
        log_begin_msg "Restarting $DESC"
        stop_puppet
        sleep 1
        start_puppet
        log_end_msg 0
        ;;
  *)
        echo "Usage: $0 {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0
$

自動起動するようにupdate-rc.dコマンドで設定して動作確認してみます。
停止も問題なく動きました。

$ sudo update-rc.d svnserve defaults 98
 Adding system startup for /etc/init.d/svnserve ...
   /etc/rc0.d/K98svnserve -> ../init.d/svnserve
   /etc/rc1.d/K98svnserve -> ../init.d/svnserve
   /etc/rc6.d/K98svnserve -> ../init.d/svnserve
   /etc/rc2.d/S98svnserve -> ../init.d/svnserve
   /etc/rc3.d/S98svnserve -> ../init.d/svnserve
   /etc/rc4.d/S98svnserve -> ../init.d/svnserve
   /etc/rc5.d/S98svnserve -> ../init.d/svnserve
$ sudo /etc/init.d/svnserve start
Starting Subversion server..
$ svn ls svn://localhost/svn
trunk/
$ sudo /etc/init.d/svnserve stop
Stopping Subversion server..
$ svn ls svn://localhost/svn
svn: Can't connect to host 'localhost': Connection refused
$