X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=syslog-ng.init;h=073a96f227c06aa9dc8aca1ff619a619f0b8cedb;hb=6277303e66b4de858e14f282cd51fbd88c499b49;hp=a7925e922c8370520cb62ae93aba9526418d4c3c;hpb=65081da593ddd2c0871b87991d9e56860f0ad299;p=packages%2Fsyslog-ng.git diff --git a/syslog-ng.init b/syslog-ng.init old mode 100644 new mode 100755 index a7925e9..073a96f --- 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,61 +10,148 @@ # Source function library . /etc/rc.d/init.d/functions -# Set defaults -ENABLE_RECEIVE_FROM_NET=no -HOSTLIST="" -DOMAINLIST="" -MARK_TIMESTAMP="" - # Get service config if [ -f /etc/sysconfig/syslog-ng ]; then . /etc/sysconfig/syslog-ng fi -RETVAL=0 -# See how we were called. -case "$1" in - start) - # Check if the service is already running? - if [ ! -f /var/lock/subsys/syslog-ng ]; then - msg_starting "syslog-ng" - daemon syslog-ng $OPTIONS +# 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 $? +} + +# wrapper for configtest +checkconfig() { + local details=${1:-0} + + 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=$? - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/syslog-ng + if [ $RETVAL = 0 ]; then + ok + else + fail + fi + [ "$out" ] && echo >&2 "$out" else - msg_already_running "syslog-ng" + # 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 - ;; - stop) +} + +start() { + # Check if the service is already running? 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 + msg_already_running "syslog-ng" + return + fi + + msg_starting "syslog-ng" + 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 +} + +stop() { + if [ ! -f /var/lock/subsys/syslog-ng ]; then + msg_not_running "syslog-ng" + return + fi + + msg_stopping "syslog-ng" + killproc syslog-ng + rm -f /var/lock/subsys/syslog-ng >/dev/null 2>&1 +} + +condrestart() { + if [ ! -f /var/lock/subsys/syslog-ng ]; then + 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 [ -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=$? else - msg_not_running syslog-ng + msg_not_running "syslog-ng" + RETVAL=7 fi +} + +RETVAL=0 +# See how we were called. +case "$1" in + start) + configtest + start ;; - status) - status syslog-ng - exit $? + stop) + stop ;; restart) - $0 stop - $0 start - exit $? + configtest + stop + start + ;; + try-restart) + condrestart 0 ;; reload|force-reload) - if [ -f /var/lock/subsys/syslog-ng ]; then - msg_reloading "syslog-ng" - killproc syslog-ng -HUP - RETVAL=$? - else - msg_not_running syslog-ng >&2 - exit 7 - fi + reload + ;; + flush-logs) + flush_logs + ;; + checkconfig|configtest) + checkconfig 1 + ;; + status) + status syslog-ng + exit $? ;; *) - msg_usage "$0 {start|stop|restart|reload|force-reload|status}" + msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|status|checkconfig|flush-logs}" exit 3 esac