3 # bacula This shell script takes care of starting and stopping
6 # This is pretty much watered down version of the RedHat script
7 # that works on Solaris as well as Linux, but it won't work everywhere.
9 # description: It comes by night and sucks the vital essence from your computers.
14 # All these are not *really* needed but it makes it
15 # easier to "steal" this code for the development
16 # environment where they are different.
23 BACDIRCFG=@sysconfdir@
40 # A function to stop a program.
45 echo "Usage: killproc {program} [signal]"
50 # check for third arg to be kill level
51 if [ "$3" != "" ] ; then
58 # Get base program name
62 pid=`pidofproc $base $2`
65 if [ "$pid" != "" ] ; then
66 if [ "$notset" = "1" ] ; then
67 if ps -p $pid>/dev/null 2>&1; then
68 # TERM first, then KILL if not dead
69 kill -TERM $pid 2>/dev/null
71 if ps -p $pid >/dev/null 2>&1 ; then
73 if ps -p $pid >/dev/null 2>&1 ; then
75 if ps -p $pid >/dev/null 2>&1 ; then
76 kill -KILL $pid 2>/dev/null
81 ps -p $pid >/dev/null 2>&1
83 [ $RC -eq 0 ] && failure "$base shutdown" || success "$base shutdown"
85 # use specified level only
87 if ps -p $pid >/dev/null 2>&1; then
88 kill $killlevel $pid 2>/dev/null
90 [ $RC -eq 0 ] && success "$base $killlevel" || failure "$base $killlevel"
94 failure "$base shutdown"
96 # Remove pid file if any.
97 if [ "$notset" = "1" ]; then
98 rm -f ${PIDDIR}/$base.$2.pid
103 # A function to find the pid of a program.
108 echo "Usage: pidofproc {program}"
112 # Get base program name
116 if [ -f ${PIDDIR}/$base.$2.pid ] ; then
117 pid=`head -n 1 ${PIDDIR}/$base.$2.pid`
118 if [ "$pid" != "" ] ; then
125 if [ -x ${PIDOF} ] ; then
128 if [ "$pid" != "" ] ; then
133 # Finally try to extract it from ps
134 ${PSCMD} | grep $1 | awk '{ print $1 }' | tr '\n' ' '
141 echo "Usage: status {program}"
145 # Get base program name
149 if [ -x ${PIDOF} ] ; then
152 if [ "$pid" != "" ] ; then
153 echo "$base (pid $pid) is running..."
156 pid=`${PSCMD} | awk 'BEGIN { prog=ARGV[1]; ARGC=1 }
157 { if ((prog == $2) || (("(" prog ")") == $2) ||
158 (("[" prog "]") == $2) ||
159 ((prog ":") == $2)) { print $1 ; exit 0 } }' $1`
160 if [ "$pid" != "" ] ; then
161 echo "$base (pid $pid) is running..."
166 # Next try the PID files
167 if [ -f ${PIDDIR}/$base.$2.pid ] ; then
168 pid=`head -n 1 ${PIDDIR}/$base.$2.pid`
169 if [ "$pid" != "" ] ; then
170 echo "$base dead but pid file exists"
174 # See if the subsys lock exists
175 if [ -f ${SUBSYSDIR}/$base ] ; then
176 echo "$base dead but subsys locked"
179 echo "$base is stopped"
194 # if /lib/tls exists, force Bacula to use the glibc pthreads instead
195 if [ -d "/lib/tls" -a $OS = "Linux" ] ; then
196 export LD_ASSUME_KERNEL=2.4.19
201 [ -x ${BACSDBIN}/bacula-sd ] && {
202 echo "Starting the Bacula Storage daemon"
204 if [ "${SD_USER}" != '' ]; then
205 OPTIONS="${OPTIONS} -u ${SD_USER}"
208 if [ "${SD_GROUP}" != '' ]; then
209 OPTIONS="${OPTIONS} -g ${SD_GROUP}"
212 ${BACSDBIN}/bacula-sd $2 ${OPTIONS} -v -c ${BACSDCFG}/bacula-sd.conf
215 [ -x ${BACFDBIN}/bacula-fd ] && {
216 echo "Starting the Bacula File daemon"
218 if [ "${FD_USER}" != '' ]; then
219 OPTIONS="${OPTIONS} -u ${FD_USER}"
222 if [ "${FD_GROUP}" != '' ]; then
223 OPTIONS="${OPTIONS} -g ${FD_GROUP}"
226 ${BACFDBIN}/bacula-fd $2 ${OPTIONS} -v -c ${BACFDCFG}/bacula-fd.conf
229 [ -x ${BACDIRBIN}/bacula-dir ] && {
231 echo "Starting the Bacula Director daemon"
233 if [ "${DIR_USER}" != '' ]; then
234 OPTIONS="${OPTIONS} -u ${DIR_USER}"
237 if [ "${DIR_GROUP}" != '' ]; then
238 OPTIONS="${OPTIONS} -g ${DIR_GROUP}"
241 ${BACDIRBIN}/bacula-dir $2 ${OPTIONS} -v -c ${BACDIRCFG}/bacula-dir.conf
246 # Stop the FD first so that SD will fail jobs and update catalog
247 [ -x ${BACFDBIN}/bacula-fd ] && {
248 echo "Stopping the Bacula File daemon"
249 killproc ${BACFDBIN}/bacula-fd ${FD_PORT}
252 [ -x ${BACSDBIN}/bacula-sd ] && {
253 echo "Stopping the Bacula Storage daemon"
254 killproc ${BACSDBIN}/bacula-sd ${SD_PORT}
257 [ -x ${BACDIRBIN}/bacula-dir ] && {
258 echo "Stopping the Bacula Director daemon"
259 killproc ${BACDIRBIN}/bacula-dir ${DIR_PORT}
271 [ -x ${BACSDBIN}/bacula-sd ] && status ${BACSDBIN}/bacula-sd ${SD_PORT}
272 [ -x ${BACFDBIN}/bacula-fd ] && status ${BACFDBIN}/bacula-fd ${FD_PORT}
273 [ -x ${BACDIRBIN}/bacula-dir ] && status ${BACDIRBIN}/bacula-dir ${DIR_PORT}
277 echo "Usage: $0 {start|stop|restart|status}"