icinga2/etc/init.d/icinga2.in

164 lines
3.3 KiB
Plaintext
Raw Normal View History

#!/bin/sh
2013-02-04 12:43:16 +01:00
#
# chkconfig: 35 90 12
# description: Icinga 2
#
### BEGIN INIT INFO
# Provides: icinga2
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start Icinga 2 at boot time
# Description: Icinga 2
### END INIT INFO
prefix=@prefix@
exec_prefix=@exec_prefix@
sbindir=@sbindir@
bindir=@bindir@
2013-02-04 12:43:16 +01:00
sysconfdir=@sysconfdir@
localstatedir=@localstatedir@
icinga_user=@icinga_user@
icinga_group=@icinga_group@
2013-02-04 12:43:16 +01:00
DAEMON=$bindir/icinga2
2013-02-04 12:43:16 +01:00
ICINGA2_CONFIG_FILE=$sysconfdir/icinga2/icinga2.conf
ICINGA2_PID_FILE=$localstatedir/run/icinga2/icinga2.pid
ICINGA2_ERROR_LOG=$localstatedir/log/icinga2/error.log
ICINGA2_USER=$icinga_user
ICINGA2_GROUP=$icinga_group
2013-02-04 12:43:16 +01:00
test -x $DAEMON || exit 0
if [ ! -e $ICINGA2_CONFIG_FILE ]; then
echo "Config file '$ICINGA2_CONFIG_FILE' does not exist."
exit 1
fi
# Get function from functions library
if [ -f /etc/rc.d/init.d/functions ]; then
. /etc/rc.d/init.d/functions
elif [ -f /etc/init.d/functions ]; then
2013-02-04 12:43:16 +01:00
. /etc/init.d/functions
fi
# Load extra environment variables
if [ -f /etc/sysconfig/icinga ]; then
. /etc/sysconfig/icinga
fi
if [ -f /etc/default/icinga ]; then
. /etc/default/icinga
fi
2013-02-04 12:43:16 +01:00
# Start Icinga 2
start() {
mkdir -p `dirname -- $ICINGA2_PID_FILE`
mkdir -p `dirname -- $ICINGA2_ERROR_LOG`
echo "Validating the configuration file:"
if ! $DAEMON -c $ICINGA2_CONFIG_FILE -C; then
echo "Not starting Icinga 2 due to configuration errors."
exit 1
fi
2013-02-04 12:43:16 +01:00
printf "Starting Icinga 2: "
$DAEMON -c $ICINGA2_CONFIG_FILE -d -e $ICINGA2_ERROR_LOG -u $ICINGA2_USER -g $ICINGA2_GROUP
2013-02-04 12:43:16 +01:00
echo "Done"
echo
}
# Restart Icinga 2
stop() {
printf "Stopping Icinga 2: "
if [ ! -e $ICINGA2_PID_FILE ]; then
echo "The PID file '$ICINGA2_PID_FILE' does not exist."
exit 1
fi
pid=`cat $ICINGA2_PID_FILE`
if kill -INT $pid >/dev/null 2>&1; then
2013-02-04 12:43:16 +01:00
for i in 1 2 3 4 5 6 7 8 9 10; do
if ! kill -CHLD $pid >/dev/null 2>&1; then
2013-02-04 12:43:16 +01:00
break
fi
printf '.'
sleep 1
done
fi
if kill -CHLD $pid >/dev/null 2>&1; then
kill -KILL $pid
fi
2013-02-04 12:43:16 +01:00
echo "Done"
}
2013-08-30 14:27:24 +02:00
# Reload Icinga 2
reload() {
printf "Reloading Icinga 2: "
if [ ! -e $ICINGA2_PID_FILE ]; then
echo "The PID file '$ICINGA2_PID_FILE' does not exist."
exit 1
fi
pid=`cat $ICINGA2_PID_FILE`
if ! kill -HUP $pid >/dev/null 2>&1; then
echo "Failed - Icinga 2 is not running."
else
echo "Done"
fi
}
# Check the Icinga 2 configuration
checkconfig() {
printf "Checking configuration:"
echo "Validating the configuration file:"
exec $DAEMON -c $ICINGA2_CONFIG_FILE -C
}
2013-08-30 14:27:24 +02:00
2013-02-04 12:43:16 +01:00
# Print status for Icinga 2
status() {
printf "Icinga 2 status: "
pid=`cat $ICINGA2_PID_FILE`
2013-05-03 14:49:21 +02:00
if kill -CHLD $pid >/dev/null 2>&1; then
2013-02-04 12:43:16 +01:00
echo "Running"
else
echo "Not running"
fi
}
### main logic ###
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status FOO
;;
restart|condrestart)
stop
start
;;
reload)
2013-08-30 14:27:24 +02:00
reload
;;
checkconfig)
checkconfig
;;
2013-02-04 12:43:16 +01:00
*)
2013-09-27 13:56:11 +02:00
echo "Usage: $0 {start|stop|restart|reload|checkconfig|status}"
2013-02-04 12:43:16 +01:00
exit 1
esac
exit 0