欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Deepin Linux系统将SVN服务添加为自启动

程序员文章站 2022-05-27 16:14:11
...

每次都使用svnserve -d -r ~/repos这样的命令很繁琐,尤其是当我们需要停止或者重启svnserve时还要调用kill命令,十分不便,接下来介绍的是如何将其作为系统服务,让其可以被Debian的invoke-rc.d命令管理。

说是系统服务,说白了就是我们需要启动脚本,大家可以到/etc/init.d路径下看到一堆启动脚本,比如有我们熟悉的nginx,有了初始脚本(initscript)我们就可以通过update-rc.d创建文件链接的方式将其链入启动级别(runlevel)中去了,同样也可以被invoke-rc.d管理。

你可以随意查阅/etc/init.d路径下的某些程序的脚本文件,大体上能知道这类文件的写法,当然今天我不是介绍initscript的写法的,更何况网上已经有现成的脚本可用了,参考文章《running Subversion’s svnserve on a Debian system》,我将其脚本修改如下:

#!/bin/sh
 
### BEGIN INIT INFO
# Provides:          subversion
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the subversion daemon
# Description:       starts subversion using start-stop-daemon
### END INIT INFO
 
# sudo svnserve -d -r /home/pi/repos
# http://www.everville.de/pages/howtos/linux/svnserve/index.html
 
# start/stop subversion daemon
 
test -f /usr/bin/svnserve || exit 0
 
# 这里是svnserve执行的参数,/home/pi/repos改为你自己的版本库地址
OPTIONS="-d -T -r /home/pi/repos"
 
case "$1" in
	start)
		echo -n "Starting subversion daemon:"
		echo -n " svnserve"
		# 这里的pi:pi为member:group,即用户:组名,改为适合你自己的
		start-stop-daemon --start --quiet --oknodo --chuid pi:pi --exec /usr/bin/svnserve -- $OPTIONS
		echo "."
    	;;
 
	stop)
		echo -n "Stopping subversion daemon:"
		echo -n " svnserve"
		start-stop-daemon --stop --quiet --oknodo --exec /usr/bin/svnserve
		echo "."
		;;
 
	reload)
		;;
 
	force-reload)
	$0 restart
		;;
 
	restart)
	$0 stop
	$0 start
		;;
 
	*)
		echo "Usage: /etc/init.d/subversion (start|stop|reload|restart)"
		exit 1
		;;
 
esac
 
exit 0

大家可能注意到了BEGIN INIT INFO这样的信息,这其实是LSB信息,里面标识着这个服务运行的参数,当然在Debian 5及以下版本的系统中可以略去,但是在Debian 6及最新系统中会提示missing LSB information的错误信息,LSB信息是可以被服务加载器读取的,建议大家在不明白的情况下不要变动。

将上面的脚本按注释提示修改后保存为subversion文件,路径为/etc/init.d,添加执行属性:

chmod +x /etc/init.d/subversion

添加启动项:

update-rc.d /etc/init.d/subversion defaults

当然这个方法可能在Debian 6及高版本的Debian下不再适用,不过通过LSB信息,我们可以直接使用insserv命令来安装服务。

insserv -v -d /etc/init.d/subversion

 

上一篇: tar

下一篇: linux下安装postgresql