以自启动svn服务为例,说明在Ubuntu中如何设置完成服务的自启动。
1 runsvn.sh
#!/bin/bash
case "$1" in
start)
NUM=$(ps -efw | grep "svnserve --listen-port=8899 -d -r /var/svn" | grep -v grep | wc -l)
if [ $NUM == 0 ]; then
echo Invoking in background using \'nohup\'
source ~/.bashrc;
cd /home/dolphin/runsvn
nohup svnserve --listen-port=8899 -d -r /var/svn &
else
echo svnserve is already running
fi
;;
start-fg)
NUM=$(ps -efw | grep "svnserve --listen-port=8899 -d -r /var/svn" | grep -v grep | wc -l)
if [ $NUM == 0 ]; then
echo Starting svnserve in the foreground
else
echo svnserve is already running
fi
;;
stop)
PROCLINE=$(ps -efw | grep "svnserve --listen-port=8899 -d -r /var/svn" | grep -v grep)
if [ ! $? ]; then
echo svnserve is not running
else
PID=$(echo $PROCLINE | awk '{print $2}')
echo svnserve running as PID=$PID - Terminating Now
kill $PID
fi
;;
restart)
$0 stop
sleep 3
$0 start
;;
*)
echo "Usage: runsvn.sh {start|start-fg|stop|restart}"
exit 1
;;
esac
2 /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
*/1 * * * * dolphin cd /home/dolphin/runsvn;./runsvn.sh start &