diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 11:32:39 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 11:32:39 +0000 |
commit | b86b946791f8dcc23ed6c47d513e34ebb22c1610 (patch) | |
tree | 9893d33a249fbf175f69e9f18a7fa0b84718ec24 /debian/icinga2-bin.icinga2.init | |
parent | Adding upstream version 2.14.2. (diff) | |
download | icinga2-b86b946791f8dcc23ed6c47d513e34ebb22c1610.tar.xz icinga2-b86b946791f8dcc23ed6c47d513e34ebb22c1610.zip |
Adding debian version 2.14.2-1.debian/2.14.2-1debian
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | debian/icinga2-bin.icinga2.init | 239 |
1 files changed, 239 insertions, 0 deletions
diff --git a/debian/icinga2-bin.icinga2.init b/debian/icinga2-bin.icinga2.init new file mode 100644 index 0000000..3abca95 --- /dev/null +++ b/debian/icinga2-bin.icinga2.init @@ -0,0 +1,239 @@ +#! /bin/sh +### 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: icinga2 host/service/network monitoring and management system +# Description: icinga2 is a monitoring and management system for hosts, services and networks. +### END INIT INFO + +# Author: Alexander Wirt <formorer@debian.org> +# Markus Frosch <markus@lazyfrosch.de> + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="icinga2 monitoring daemon" +NAME=icinga2 +DAEMON=/usr/sbin/icinga2 +DAEMON_CONFIG="/etc/icinga2/icinga2.conf" +DAEMON_USER=nagios +DAEMON_GROUP=nagios +DAEMON_CMDGROUP=www-data +DAEMON_ARGS="-e /var/log/icinga2/icinga2.err" +STARTUP_LOG="/var/log/icinga2/startup.log" +PIDFILE=/run/icinga2/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME + +# Block/ignore SIGPIPE inside Icinga2 +# Workaround for a known bug in 2.6.0 +# see https://github.com/Icinga/icinga2/issues/4867#issuecomment-273109525 +trap '' 13 # SIGPIPE + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +# Load the VERBOSE setting and other rcS variables +. /lib/init/vars.sh + +# Define LSB log_* functions. +# Depend on lsb-base (>= 3.2-14) to ensure that this file is present +# and status_of_proc is working. +. /lib/lsb/init-functions + +# check run directory +check_run () { + test -d '/run/icinga2' || mkdir /run/icinga2 + test -d '/run/icinga2/cmd' || mkdir /run/icinga2/cmd + + chown "$DAEMON_USER":"$DAEMON_GROUP" /run/icinga2 + chmod 0755 /run/icinga2 + + chown "$DAEMON_USER":"$DAEMON_CMDGROUP" /run/icinga2/cmd + chmod 2710 /run/icinga2/cmd +} + +check_config () { + $DAEMON daemon --validate +} + +# +# Function that starts the daemon/service +# +do_start() +{ + check_run + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ + || return 1 + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ + daemon -d $DAEMON_ARGS \ + || return 2 + # Add code here, if necessary, that waits for the process to be ready + # to handle requests from services started subsequently which depend + # on this one. As a last resort, sleep for some time. +} + +# +# Function that starts the daemon/service in foreground for debugging +# +do_foreground() +{ + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test \ + || return 1 + start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON -- \ + daemon $DAEMON_ARGS \ + || return 2 +} + +# +# Function that stops the daemon/service +# +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME + RETVAL="$?" + [ "$RETVAL" = 2 ] && return 2 + # Wait for children to finish too if this is a daemon that forks + # and if the daemon is only ever run from this initscript. + # If the above conditions are not satisfied then add some other code + # that waits for the process to drop all resources that could be + # needed by services started subsequently. A last resort is to + # sleep for some time. + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON + [ "$?" = 2 ] && return 2 + # Many daemons don't delete their pidfiles when they exit. + rm -f $PIDFILE + return "$RETVAL" +} + +# +# Function that sends a SIGHUP to the daemon/service +# +do_reload() { + # + # If the daemon can reload its configuration without + # restarting (for example, when it is sent a SIGHUP), + # then implement that here. + # + start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME + return 0 +} + +do_check_config () { + DOEXITONOK="$1" + log_begin_msg "checking Icinga2 configuration" + if ! check_config >$STARTUP_LOG 2>&1; then + echo + [ -n "$DOEXITONOK" ] && cat $STARTUP_LOG + log_failure_msg "checking Icinga2 configuration. Check '$STARTUP_LOG' for details." + exit 1 + else + log_end_msg 0 + [ -n "$DOEXITONOK" ] && exit 0 + fi +} + +case "$1" in + start) + do_check_config + log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0|1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; + esac + ;; + foreground) + do_check_config + log_action_msg "Starting $DESC in foreground" + status=0 + trap 'status=2;' INT # handle intr here + for i in 1 2; do + do_foreground || status="$?" + case "$status" in + 0) + log_success_msg "$NAME ended graceful" + break + ;; + 1) + if [ "$i" -eq 1 ]; then + log_warning_msg "$NAME already running!" + log_begin_msg "Do you want to stop $NAME before going foreground? [y/N] " + read -r question + if [ "$question" = "y" ] || [ "$question" = "yes" ]; then + do_stop + continue + fi + fi + log_failure_msg "$NAME already running! Please stop before starting in foreground!" + break + ;; + 2) + log_failure_msg "$NAME ended" + break + ;; + esac + done + exit $status + ;; + stop) + log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; + esac + ;; + status) + status_of_proc -p "$PIDFILE" "$DAEMON" "$NAME" && exit 0 || exit $? + ;; + reload|force-reload) + do_check_config + status_of_proc -p "$PIDFILE" "$DAEMON" "$NAME" || exit $? + log_daemon_msg "Reloading $DESC" "$NAME" + do_reload + log_end_msg $? + ;; + restart) + do_check_config + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 + ;; + esac + ;; + checkconfig) + do_check_config 1 + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|status|reload|force-reload|restart|checkconfig|foreground}" >&2 + exit 3 + ;; +esac + +# vi: ts=2 sw=2 expandtab : +: |