Subversion
init.d 腳本手動啟動,但不是通過服務命令或啟動時啟動
我有一個 subversion init.d 腳本,如果我啟動它可以手動啟動它
$ sudo /etc/init.d/subversion start
我得到這個回應:
$ Starting Subversion Daemon (svnserve): [ OK ]
但是,如果我通過添加腳本
$ sudo /sbin/chkconfig --add subversion
然後執行:
$ /sbin/service subversion start
我得到這個回應:
$ Starting Subversion Daemon (svnserve): /etc/init.d/subversion: Usage: daemon [+/-nicelevel] {program}
有沒有人見過這個?腳本上的權限是 +x。下面的 init.d 腳本:
/etc/init.d/subversion:
#!/bin/bash # # /etc/init.d/subversion # # Starts the Subversion Daemon # # chkconfig: 2345 90 10 # description: Subversion Daemon # copied from http://www.svnforum.org/threads/31170-init.d-script-for-fedora-redhat # processname: svnserve source /etc/rc.d/init.d/functions [ -x /usr/bin/svnserve ] || exit 1 ### Default variables SYSCONFIG="/etc/sysconfig/subversion" ### Read configuration [ -r "$SYSCONFIG" ] && source "$SYSCONFIG" RETVAL=0 prog="svnserve" desc="Subversion Daemon" start() { echo -n $"Starting $desc ($prog): " daemon --user $USER $prog -d $OPTIONS 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
/etc/sysconfig/subversion:
OPTIONS="-r /data/repository/"
這是您在 init 腳本中使用的守護程序命令的問題。
未
$USER
設置變數,因此在將參數傳遞給守護程序函式時:--user) user=$2 shift 2 ;;
該
svnserve
參數被用於user=$2
,因此-d
由函式解析:*) echo $"$0: Usage: daemon [+/-nicelevel] {program}" return 1;;
USER
所以要麼在腳本中硬編碼變數,要麼--user $USER
從daemon
參數中刪除。此外,您應該硬編碼
$prog
變數的路徑:prog=/usr/bin/svnserve