X-Git-Url: http://git.pld-linux.org/?p=packages%2Fsyslog-ng.git;a=blobdiff_plain;f=syslog-ng.init;h=5dd26392ecd3c7190b813f6ba1aec7f183e3b2b3;hp=212d48abe0be7bb506dd2bf7a1f8483929dc0aa2;hb=9e7ba88df74fcf4e278b3a632eeffd1d5346092c;hpb=129b066d460be3a24c75af9940d5b226c797d36f diff --git a/syslog-ng.init b/syslog-ng.init index 212d48a..5dd2639 100644 --- a/syslog-ng.init +++ b/syslog-ng.init @@ -1,8 +1,8 @@ #!/bin/sh # -# syslog Starts syslog-ng (syslogd replacment). +# syslog Starts syslog-ng (syslogd replacement). # -# chkconfig: 2345 30 70 +# chkconfig: 2345 17 83 # description: Syslog is the facility by which many daemons use to log \ # messages to various system log files. It is a good idea to \ # always run syslog. @@ -10,69 +10,158 @@ # Source function library . /etc/rc.d/init.d/functions -# Get network config -. /etc/sysconfig/network +# Get service config +if [ -f /etc/sysconfig/syslog-ng ]; then + . /etc/sysconfig/syslog-ng +fi -# Set defaults -ENABLE_RECEIVE_FROM_NET=no -HOSTLIST="" -DOMAINLIST="" -MARK_TIMESTAMP="" +# configtest itself +# must return non-zero if check failed +# output is discarded if checkconfig is ran without details +configtest() { + syslog-ng $OPTIONS -F -s -p /var/run/syslog-ng-syntaxcheck.pid + return $? +} -[ -f /usr/sbin/syslog-ng ] || exit 0 -[ -f /etc/syslog-ng/syslog-ng.conf ] || exit 0 +# wrapper for configtest +checkconfig() { + local details=${1:-0} -# Get service config -if [ -f /etc/sysconfig/syslog-ng ] ; then - . /etc/sysconfig/syslog-ng -fi + if [ $details = 1 ]; then + # run config test and display report (status action) + show "Checking %s configuration" "syslog-ng"; busy + local out + out=$(configtest 2>&1) + RETVAL=$? + if [ $RETVAL = 0 ]; then + ok + else + fail + fi + [ "$out" ] && echo >&2 "$out" + else + # run config test and abort with nice message if failed + # (for actions checking status before action). + configtest >/dev/null 2>&1 + RETVAL=$? + if [ $RETVAL != 0 ]; then + show "Checking %s configuration" "syslog-ng"; fail + nls 'Configuration test failed. See details with %s "checkconfig"' $0 + exit $RETVAL + fi + fi +} -# See how we were called. -case "$1" in - start) +start() { # Check if the service is already running? + if [ -f /var/lock/subsys/syslog-ng ]; then + msg_already_running "syslog-ng" + return + fi + + msg_starting "syslog-ng" + emit starting JOB=syslog-ng SERVICE_syslog=y + daemon @@SBINDIR@@/syslog-ng -f /etc/syslog-ng/syslog-ng.conf --worker-threads=1024 $OPTIONS + RETVAL=$? + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/syslog-ng + emit --no-wait started JOB=syslog-ng SERVICE_syslog=y +} + +stop() { + if [ ! -f /var/lock/subsys/syslog-ng ]; then + msg_not_running "syslog-ng" + return + fi + + msg_stopping "syslog-ng" + emit stopping JOB=syslog-ng SERVICE_syslog=y + killproc syslog-ng + emit --no-wait stopped JOB=syslog-ng SERVICE_syslog=y + rm -f /var/lock/subsys/syslog-ng >/dev/null 2>&1 +} + +condrestart() { if [ ! -f /var/lock/subsys/syslog-ng ]; then - msg_starting "syslog-ng" - daemon syslog-ng $OPTIONS + msg_not_running "syslog-ng" + RETVAL=$1 + return + fi + + checkconfig + stop + start +} + +reload() { + if [ ! -f /var/lock/subsys/syslog-ng ]; then + msg_not_running "syslog-ng" + RETVAL=7 + return + fi + + checkconfig + msg_reloading "syslog-ng" + killproc syslog-ng -HUP + RETVAL=$? +} + +flush_logs() { + if use_upstart && [ -f /etc/init/syslog-ng.conf ]; then + checkconfig + /sbin/initctl reload syslog-ng + elif [ -x /bin/systemd_booted ] && /bin/systemd_booted; then + checkconfig + msg_reloading "syslog-ng" + /bin/systemctl reload syslog-ng.service + RETVAL=$? + [ $RETVAL -eq 0 ] && ok || fail + elif [ -f /var/lock/subsys/syslog-ng ]; then + checkconfig + msg_reloading "syslog-ng" + killproc syslog-ng -HUP RETVAL=$? - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/syslog-ng else - msg_already_running "syslog-ng" + msg_not_running "syslog-ng" + RETVAL=7 fi +} + +upstart_controlled --except checkconfig configtest flush-logs + +RETVAL=0 +# See how we were called. +case "$1" in + start) + configtest + start ;; - stop) - if [ -f /var/lock/subsys/syslog-ng ]; then - msg_stopping "syslog-ng" - killproc syslog-ng - rm -f /var/lock/subsys/syslog-ng >/dev/null 2>&1 - else - msg_not_running syslog-ng - exit 1 - fi - ;; - status) - status syslog-ng + stop) + stop ;; restart) - $0 stop - $0 start + configtest + stop + start ;; - reload) - if [ -f /var/lock/subsys/syslog-ng ]; then - msg_reloading "syslog-ng" - killproc syslog-ng -HUP - else - msg_not_running syslog-ng - exit 1 - fi + try-restart) + condrestart 0 + ;; + reload|force-reload) + reload + ;; + flush-logs) + flush_logs ;; - force-reload) - $0 reload + checkconfig|configtest) + checkconfig 1 + ;; + status) + status syslog-ng exit $? ;; *) - msg_usage "$0 {start|stop|status|restart|reload|force-reload}" - exit 1 + msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|status|checkconfig|flush-logs}" + exit 3 esac exit $RETVAL