svnserve init.d 脚本

svnserve init.d 脚本

有没有人有可用的 svn 服务初始化脚本?

谢谢

答案1

现在它应该非常简单(如果只有 svnserve 附带它;我目前正在使用 v1.9.5):

sudo systemctl enable svnserve
sudo systemctl daemon-reload

但是 /etc/init.d/svnserve 仍然适用于 Stretch(Debian v9.2,我目前使用的):

#!/bin/sh
if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
    set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
fi
### BEGIN INIT INFO
# Provides:          svnserve
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: svnserve init script
# Description:       bare minimum svn init script
### END INIT INFO
DESC="subversion server"
DAEMON=/usr/bin/svnserve
DAEMON_ARGS="-d -r /data/svn --log-file /var/log/svn.log"

注意:更改 repo 基本路径以满足您的需求,即我使用“svnadmin create /data/svn/repo1”和守护进程参数中的此路径,以便我可以简单地 svn://host/repo1

然后运行:

sudo chmod 755 /etc/init.d/svnserve
sudo update-rc.d svnserve defaults

如果您收到有关缺少 init-d-script 的错误,则您可能正在使用旧的 Debian,例如 Wheezy,因此“sudo rm /etc/init.d/svnserve”然后“sudo cp /etc/init.d/skeleton /etc/init.d/svnserve”(在 Wheezy 中存在,但现在不存在),并更改以下三行(第一个块是默认的,第二个块是它应该的,注意 sbin=>bin):

NAME=daemonexecutablename
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS="--options args"

NAME=svnserve
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-d -r /data/svn --log-file /var/log/svn.log"*

[信息太多比信息太少好]

答案2

这是我做的。注意我的 svn 目录位于根文件夹 /svn

#!/bin/bash
#
#   /etc/rc.d/init.d/subversion
#
# Starts the Subversion Daemon
#
# chkconfig: 2345 90 10
# description: Subversion Daemon

# processname: svnserve

. /etc/rc.d/init.d/functions

[ -x /usr/bin/svnserve ] || exit 1

RETVAL=0
prog="svnserve"
desc="Subversion Daemon"

start() {
        echo -n $"Starting $desc ($prog): "
   daemon $prog -r /svn -d
   RETVAL=$?
   [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
   echo
}

stop() {
   echo -n $"Shutting down $desc ($prog): "
   killproc $prog
   RETVAL=$?
   [ $RETVAL -eq 0 ] && success || failure
   echo
   [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
   return $RETVAL
}

case "$1" in
  start)
   start
   ;;
  stop)
   stop
   ;;
  restart)
   stop
   start
   RETVAL=$?
   ;;
  condrestart)
        [ -e /var/lock/subsys/$prog ] && restart
   RETVAL=$?
   ;;
  *)
   echo $"Usage: $0 {start|stop|restart|condrestart}"
   RETVAL=1
esac

exit $RETVAL

更改此行以反映您的目录

daemon $prog -r /svn -denter code here

然后在shell中运行

#chkconfig --add svnserve
#chkconfig svnserve on

重启服务看看是否能正常工作

#service svnserve restart

然后轰隆隆 :D

答案3

我创建了一个智能的 Debian 脚本,主要基于 Tomcat 包。您可以根据需要更改主要变量,它还可以处理默认机制。尽情享受吧。

/bin/sh #!/bin/sh
#
# /etc/init.d/subversion——Subversion 的启动脚本
#
# 作者:Csaba Tenkes[电子邮件保护]
#
### 开始初始化信息
# 提供:颠覆
# 必需启动:$local_fs $remote_fs $network
# 必需停止:$local_fs $remote_fs $network
# 默认开始: 2 3 4 5
# 默认停止: 0 1 6
# 简短描述:开始颠覆
#描述:启动 Subversion 服务器。
### 结束初始化信息

设置-e
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DESC="Subversion 服务器"
名称=svnserve
SCRIPTNAME=/etc/init.d/$NAME
PIDFILE=/var/run/$NAME.pid

SVN_USER=颠覆
SVN_GROUP=颠覆
SVN_REPO_PATH=/opt/svn-repos/

SVNSERVE=/usr/bin/$名称
SVNSERVE_ARGS="-d -r $SVN_REPO_PATH"

[ -x "$SVNSERVE" ] || 退出 0

[ -r /etc/默认/$名称 ] && . /etc/默认/$名称

./lib/lsb/init-函数


案例“$1”
  开始)
    设置 +e
    log_daemon_msg“开始 $DESC” “$NAME”
    如果 ![ -f "$PIDFILE" ]; 则 # TODO: 'ps fax | grep svnserve| grep ?' 或进程存在
        umask 002
        启动-停止守护进程 --start --chuid $SVN_USER:$SVN_GROUP --make-pidfile --pidfile $PIDFILE --exec $SVNSERVE -- \
            $SVNSERVE_ARGS> / dev / null;
        chown $SVN_USER "$PIDFILE"
        log_end_msg 0
    别的    
        log_progress_msg“(已在运行)”
        log_end_msg $?
    设置-e
    ;;

  停止)
    设置 +e
    log_daemon_msg“停止$DESC” “$NAME”
    如果 [ -f "$PIDFILE" ]; 那么

        如果 start-stop-daemon --stop --exec $SVNSERVE; 那么
            log_end_msg 0
        别的
            log_end_msg $?
        rm -f "$PIDFILE"
    别的
        log_progress_msg“(未运行)”
        log_end_msg 0
    设置-e
    ;;

  重启|强制重新加载)
    如果 [ -f "$PIDFILE" ]; 那么
        $0停止
        睡眠 1
    0 美元起
    ;;

  地位)
    设置 +e
    启动-停止守护进程--测试--启动--pidfile“$PIDFILE”\
    --用户$SVN_USER --exec $SVNSERVE \
    >/dev/null 2>&1

    如果 [ “$?” = “0” ]; 那么
        如果 [ -f "$PIDFILE" ]; 那么
            PID=`cat $PIDFILE`
            log_daemon_msg "$DESC" "$NAME (pid $PID) 正在运行."
            log_end_msg 0
            出口 0
        别的
            log_daemon_msg "$DESC" "$NAME 未运行"
            log_end_msg 0
            出口 3
    别的
        log_daemon_msg "$DESC " "$NAME 正在使用 pid `cat $PIDFILE` 运行"
        log_end_msg 0
        出口 0
    设置-e
    ;;


  *)
    log_success_msg "用法:$SCRIPTNAME {start|stop|status|restart|force-reload}"
    出口 1
    ;;
埃萨克

出口 0

相关内容