From 18a10580e110eead8a9cceb24963d8fc74c7ebc5 Mon Sep 17 00:00:00 2001 From: Ryan Sundberg Date: Tue, 31 Oct 2017 15:41:59 -0700 Subject: [PATCH] Syslog-ng start and stop, preserving stdout file descriptor --- image/services/syslog-ng/syslog-ng.init | 28 +++++++++++++++++++-- image/services/syslog-ng/syslog-ng.shutdown | 25 ++++++++++++++++-- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/image/services/syslog-ng/syslog-ng.init b/image/services/syslog-ng/syslog-ng.init index 6c31aa0..04f526b 100755 --- a/image/services/syslog-ng/syslog-ng.init +++ b/image/services/syslog-ng/syslog-ng.init @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash set -e # If /dev/log is either a named pipe or it was placed there accidentally, @@ -7,4 +7,28 @@ set -e if [ ! -S /dev/log ]; then rm -f /dev/log; fi if [ ! -S /var/lib/syslog-ng/syslog-ng.ctl ]; then rm -f /var/lib/syslog-ng/syslog-ng.ctl; fi -/etc/init.d/syslog-ng start +PIDFILE="/var/run/syslog-ng.pid" +SYSLOGNG_OPTS="" + +[ -r /etc/default/syslog-ng ] && . /etc/default/syslog-ng + +syslogng_wait() { + if [ "$2" -ne 0 ]; then + return 1 + fi + + RET=1 + for i in $(seq 1 30); do + status=0 + syslog-ng-ctl stats >/dev/null 2>&1 || status=$? + if [ "$status" != "$1" ]; then + RET=0 + break + fi + sleep 1s + done + return $RET +} + +/usr/sbin/syslog-ng --pidfile "$PIDFILE" -F $SYSLOGNG_OPTS & +syslogng_wait 1 $? diff --git a/image/services/syslog-ng/syslog-ng.shutdown b/image/services/syslog-ng/syslog-ng.shutdown index 7f0324e..0288004 100755 --- a/image/services/syslog-ng/syslog-ng.shutdown +++ b/image/services/syslog-ng/syslog-ng.shutdown @@ -1,3 +1,24 @@ -#!/bin/sh +#!/bin/bash -/etc/init.d/syslog-ng stop +PIDFILE="/var/run/syslog-ng.pid" + +syslogng_wait() { + if [ "$2" -ne 0 ]; then + return 1 + fi + + RET=1 + for i in $(seq 1 30); do + status=0 + syslog-ng-ctl stats >/dev/null 2>&1 || status=$? + if [ "$status" != "$1" ]; then + RET=0 + break + fi + sleep 1s + done + return $RET +} + +kill $(cat "$PIDFILE") +syslogng_wait 0 $?