设置SVN自动启动--Ubuntu10.04

手头有一个项目要开发,需要一个源代码控制软件。最后选的是SVN。有关如何在Ubuntu上安装SVN, 请参考下面两篇文章,

http://odyniec.net/articles/ubuntu-subversion-server/

https://help.ubuntu.com/community/Subversion

 

这两篇文章对如何安装,配置基本的SVN有详细的介绍,我就不重复。主要补充一下如何添加自动启动脚本。

当然上面两篇文档都提到了去下一个脚本 ,然后放到/etc/init.d/目录下,但是这个脚本还是有些问题的,有可能是因为比较老或者作者的环境和我不一样造成的。

 

首先,我遇到的一个问题是,这个脚本能启动SVN,但是PID文件不能生成。

 

do_start()
{
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null /
        || return 1
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- /
        $DAEMON_ARGS /
        || return 2
}

 

查了相关文档,发现start-stop-daemon有个参数--make-pidfile可以自动生成PID文件。添加这个参数后,PID文件生成了,但是又一个问题,就是写到这个文件里的PID和进程里显示的PID是不匹配的,造成无法Stop。

查看了start-stop-daemon的帮助,里面说,--make-pidfile可以生成PID文件,但是是在进程运行之前。Faint了,这个说法也就是说,生成这个文件时取得PID值,不一定就是真正的PID值。我看到好多文章提到说,在使用--make-pidfile,而且PID值是匹配的,不知道他们怎么做到PID值匹配的。

最后解决的办法,svnserve命令本身,可以带一个参数来自动生成PID文件,--pid-file。 这个才是我真正想要的,而且能解决PID不匹配的问题。

usr/bin/svnserve -d -r /opt/svnproject --pid-file=$PIDFILE, 这个才是运行svnserve需要的命令。

 

第2个需要注意的问题,svnserve会产生许多子进程, 如果使用start-stop-daemon来关掉SVN时只指定PID文件,是不能把子进程一同关掉的。

do_stop()
{
    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
    RETVAL="$?"
    [ "$RETVAL" = 2 ] && return 2
    start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
    [ "$?" = 2 ] && return 2
    rm -f $PIDFILE
    return "$RETVAL"
}

像上面那样,指定--exec $DAEMON参数,就会根据名称挨个去关掉。

 

下面是脚本的例子,

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值