X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fscripts%2Fbacula.in;h=0ca89a1d68e46198455749d07786c3eddd4eade8;hb=9235855757736c38f11bf81f9f0fc6cc59702f5b;hp=f530ba66a376804064e08d6688111b240ddbeb85;hpb=802e6f8682fc16f4a5dc018bf8a16315e35cfc53;p=bacula%2Fbacula diff --git a/bacula/scripts/bacula.in b/bacula/scripts/bacula.in index f530ba66a3..0ca89a1d68 100755 --- a/bacula/scripts/bacula.in +++ b/bacula/scripts/bacula.in @@ -11,6 +11,30 @@ PSCMD="@PSCMD@" +# All these are not *really* needed but it makes it +# easier to "steal" this code for the development +# environment where they are different. +# +BACFDBIN=@sbindir@ +BACFDCFG=@sysconfdir@ +BACSDBIN=@sbindir@ +BACSDCFG=@sysconfdir@ +BACDIRBIN=@sbindir@ +BACDIRCFG=@sysconfdir@ +PIDDIR=@piddir@ +SUBSYSDIR=@subsysdir@ + +DIR_PORT=@dir_port@ +FD_PORT=@fd_port@ +SD_PORT=@sd_port@ + +DIR_USER=@dir_user@ +DIR_GROUP=@dir_group@ +FD_USER=@fd_user@ +FD_GROUP=@fd_group@ +SD_USER=@sd_user@ +SD_GROUP=@sd_group@ + # A function to stop a program. killproc() { RC=0 @@ -69,7 +93,7 @@ killproc() { fi # Remove pid file if any. if [ "$notset" = "1" ]; then - rm -f @piddir@/$base.$2.pid + rm -f ${PIDDIR}/$base.$2.pid fi return $RC } @@ -87,8 +111,8 @@ pidofproc() { base=`basename $1` # First try PID file - if [ -f @piddir@/$base.$2.pid ] ; then - pid=`head -1 @piddir@/$base.$2.pid` + if [ -f ${PIDDIR}/$base.$2.pid ] ; then + pid=`head -1 ${PIDDIR}/$base.$2.pid` if [ "$pid" != "" ] ; then echo $pid return 0 @@ -138,15 +162,15 @@ status() { fi # Next try the PID files - if [ -f @piddir@/$base.$2.pid ] ; then - pid=`head -1 @piddir@/$base.$2.pid` + if [ -f ${PIDDIR}/$base.$2.pid ] ; then + pid=`head -1 ${PIDDIR}/$base.$2.pid` if [ "$pid" != "" ] ; then echo "$base dead but pid file exists" return 1 fi fi # See if the subsys lock exists - if [ -f @subsysdir@/$base ] ; then + if [ -f ${SUBSYSDIR}/$base ] ; then echo "$base dead but subsys locked" return 2 fi @@ -165,33 +189,81 @@ failure() { case "$1" in start) - echo "Starting the Storage daemon" - @sbindir@/bacula-sd $2 -v -c @sysconfdir@/bacula-sd.conf - echo "Starting the File daemon" - @sbindir@/bacula-fd $2 -v -c @sysconfdir@/bacula-fd.conf - sleep 2 - echo "Starting the Director daemon" - @sbindir@/bacula-dir $2 -v -c @sysconfdir@/bacula-dir.conf + [ -x ${BACSDBIN}/bacula-sd ] && { + echo "Starting the Storage daemon" + OPTIONS='' + if [ "${SD_USER}" != '' ]; then + OPTIONS="${OPTIONS} -u ${SD_USER}" + fi + + if [ "${SD_GROUP}" != '' ]; then + OPTIONS="${OPTIONS} -g ${SD_GROUP}" + fi + + ${BACSDBIN}/bacula-sd $2 ${OPTIONS} -v -c ${BACSDCFG}/bacula-sd.conf + } + + [ -x ${BACFDBIN}/bacula-fd ] && { + echo "Starting the File daemon" + OPTIONS='' + if [ "${FD_USER}" != '' ]; then + OPTIONS="${OPTIONS} -u ${FD_USER}" + fi + + if [ "${FD_GROUP}" != '' ]; then + OPTIONS="${OPTIONS} -g ${FD_GROUP}" + fi + + ${BACFDBIN}/bacula-fd $2 ${OPTIONS} -v -c ${BACFDCFG}/bacula-fd.conf + } + + [ -x ${BACDIRBIN}/bacula-dir ] && { + sleep 2 + echo "Starting the Director daemon" + OPTIONS='' + if [ "${DIR_USER}" != '' ]; then + OPTIONS="${OPTIONS} -u ${DIR_USER}" + fi + + if [ "${DIR_GROUP}" != '' ]; then + OPTIONS="${OPTIONS} -g ${DIR_GROUP}" + fi + + ${BACDIRBIN}/bacula-dir $2 ${OPTIONS} -v -c ${BACDIRCFG}/bacula-dir.conf + } ;; + stop) - echo "Stopping the File daemon" - killproc @sbindir@/bacula-fd @fd_port@ - echo "Stopping the Storage daemon" - killproc @sbindir@/bacula-sd @sd_port@ - echo "Stopping the Director daemon" - killproc @sbindir@/bacula-dir @dir_port@ + # Stop the FD first so that SD will fail jobs and update catalog + [ -x ${BACFDBIN}/bacula-fd ] && { + echo "Stopping the File daemon" + killproc ${BACFDBIN}/bacula-fd ${FD_PORT} + } + + [ -x ${BACSDBIN}/bacula-sd ] && { + echo "Stopping the Storage daemon" + killproc ${BACSDBIN}/bacula-sd ${SD_PORT} + } + + [ -x ${BACDIRBIN}/bacula-dir ] && { + echo "Stopping the Director daemon" + killproc ${BACDIRBIN}/bacula-dir ${DIR_PORT} + } echo ;; + restart) $0 stop sleep 5 $0 start ;; + status) - status @sbindir@/bacula-sd @sd_port@ - status @sbindir@/bacula-fd @fd_port@ - status @sbindir@/bacula-dir @dir_port@ + [ -x ${BACSDBIN}/bacula-sd ] && status ${BACSDBIN}/bacula-sd ${SD_PORT} + [ -x ${BACFDBIN}/bacula-fd ] && status ${BACFDBIN}/bacula-fd ${FD_PORT} + [ -x ${BACDIRBIN}/bacula-dir ] && status ${BACDIRBIN}/bacula-dir ${DIR_PORT} ;; + *) echo "Usage: $0 {start|stop|restart|status}" exit 1