Skip to content

Instantly share code, notes, and snippets.

@bigbosst
Last active August 29, 2015 14:07
Show Gist options
  • Save bigbosst/89d11a1e40e437451af9 to your computer and use it in GitHub Desktop.
Save bigbosst/89d11a1e40e437451af9 to your computer and use it in GitHub Desktop.
Bacula - init script with configtest
#! /bin/sh
### BEGIN INIT INFO
# Provides: bacula-director
# Required-Start: $remote_fs $syslog
# Should-Start: bacula-fd postgresql mysql
# Required-Stop: $remote_fs $syslog
# Should-Stop: bacula-fd postgresql mysql
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start Bacula Director at boot time
# Description: bacula-director is the daemon that supervises all the
# backup, restore, verify and archive operations. The
# system administrator uses the Bacula Director to schedule
# backups and to recover files.
### END INIT INFO
# bacula-director SysV init script for Bacula-Director.
#
# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
# Modified for Debian GNU/Linux by Ian Murdock <imurdock@gnu.ai.mit.edu>.
# Customized for Bacula by Jose Luis Tallon <jltallon@adv-solutions.net>
# Customized for configtest by Troy Germain <troy.germain@gmail.com>.
#
set -e
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/bacula-dir
NAME="bacula-dir"
PORT=9101
DESC="Bacula Director"
if [ ! -x $DAEMON ] ; then
echo "No bacula-director SQL package installed"
exit 0
fi
if [ -n "`getent services bacula-dir`" ]; then
PORT=`getent services bacula-dir | awk '{ gsub("/tcp","",$2); print $2; }'`
fi
PIDFILE=/var/run/bacula/$NAME.$PORT.pid
. /lib/lsb/init-functions
. /usr/share/bacula-common/common-functions.init
if [ -r /etc/default/$NAME ]; then
. /etc/default/$NAME
fi
CONFIG="${CONFIG:-/etc/bacula/$NAME.conf}"
create_var_run_dir
get_pid()
{
if [ -r "$1" ]; then pid="`cat $1`";
else pid=""; fi
}
kill_pid()
{
kill -$1 $2 2>/dev/null || true
}
# do_start()
do_start()
{
start-stop-daemon --start --quiet --pidfile $PIDFILE \
--oknodo --exec $DAEMON -- -c $CONFIG $ARGS
}
# do_stop()
do_stop()
{
start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \
--retry TERM/30/KILL/5 --exec $DAEMON -- -c $CONFIG $ARGS
}
# do_configtest()
do_configtest()
{
$DAEMON -t -c $CONFIG
}
########################################################################
case "$1" in
start)
if [ "$ENABLED" = "no" ]; then
log_failure_msg "Not starting $DESC: disabled via /etc/default/$NAME"
exit 0
fi
create_var_run_dir
log_daemon_msg "Starting $DESC..." "$NAME"
if do_start ; then
log_end_msg 0
else
log_end_msg 1
fi
;;
stop)
log_daemon_msg "Stopping $DESC..." "$NAME"
if do_stop ; then
log_end_msg 0
else
log_end_msg 1
fi
;;
reload)
log_daemon_msg "Reloading $DESC..." "$NAME"
get_pid $PIDFILE
if [ -n "$pid" ]; then
kill_pid HUP $pid
log_end_msg 0
else
log_progress_msg "$NAME not running"
log_end_msg 0
fi
;;
restart|force-reload)
$0 stop
$0 start
;;
configtest)
log_daemon_msg "Testing Config $DESC..." "$NAME"
if do_configtest ; then
log_end_msg 0
else
log_end_msg 1
fi
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME
;;
*)
N=/etc/init.d/$NAME
# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $N {start|stop|restart|reload|force-reload|status|configtest}" >&2
exit 1
;;
esac
exit 0
@bigbosst
Copy link
Author

bigbosst commented Oct 2, 2014

Added 'configtest' function and updated 'reload' behavior. If not running, it will now log message, but not start the service (standard expected init behavior)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment