From f2909b80fdb62e304d4d01c8f52b2fae3a12d161 Mon Sep 17 00:00:00 2001 From: Markus Frosch Date: Wed, 11 Dec 2013 16:07:46 +0100 Subject: [PATCH] Debian: Added foreground init helper to debug Icinga 2. Refs #5305 --- debian/icinga2-common.icinga2.init | 47 +++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/debian/icinga2-common.icinga2.init b/debian/icinga2-common.icinga2.init index bd5561c0c..f64bb3b1c 100644 --- a/debian/icinga2-common.icinga2.init +++ b/debian/icinga2-common.icinga2.init @@ -73,6 +73,18 @@ do_start() # 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 -- \ + -c "$DAEMON_CONFIG" -u "$DAEMON_USER" -g "$DAEMON_GROUP" $DAEMON_ARGS \ + || return 2 +} + # # Function that stops the daemon/service # @@ -138,6 +150,39 @@ case "$1" in 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 @@ -178,7 +223,7 @@ case "$1" in do_check_config 1 ;; *) - echo "Usage: $SCRIPTNAME {start|stop|status|reload|force-reload|restart|checkconfig}" >&2 + echo "Usage: $SCRIPTNAME {start|stop|status|reload|force-reload|restart|checkconfig|foreground}" >&2 exit 3 ;; esac