#! /bin/sh ### BEGIN INIT INFO # Provides: rsyslog # Required-Start: $remote_fs $time # Required-Stop: umountnfs $time # X-Stop-After: sendsigs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: enhanced syslogd # Description: Rsyslog is an enhanced multi-threaded syslogd. # It is quite compatible to stock sysklogd and can be # used as a drop-in replacement. ### END INIT INFO # # Author: Michael Biebl # # PATH should only include /usr/* if it runs after the mountnfs.sh script global PATH := '/sbin:/usr/sbin:/bin:/usr/bin' global DESC := '"enhanced syslogd'" global NAME := 'rsyslog' global RSYSLOGD := 'rsyslogd' global DAEMON := '/usr/sbin/rsyslogd' global PIDFILE := '/var/run/rsyslogd.pid' global SCRIPTNAME := "/etc/init.d/$NAME" # Exit if the package is not installed test -x $DAEMON || exit 0 # Read configuration variable file if it is present test -r /etc/default/$NAME && source /etc/default/$NAME # Define LSB log_* functions. source /lib/lsb/init-functions proc do_start { # Return # 0 if daemon has been started # 1 if daemon was already running # other if daemon could not be started or a failure occured start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $RSYSLOGD_OPTIONS } proc do_stop { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # other if daemon could not be stopped or a failure occurred start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMON } # # Tell rsyslogd to close all open files # proc do_rotate { start-stop-daemon --stop --signal HUP --quiet --pidfile $PIDFILE --exec $DAEMON } proc create_xconsole { global XCONSOLE := '/dev/xconsole' if test $[uname -s] != "Linux" { global XCONSOLE := '/run/xconsole' ln -sf $XCONSOLE /dev/xconsole } if test ! -e $XCONSOLE { mknod -m 640 $XCONSOLE p chown root:adm $XCONSOLE test -x /sbin/restorecon && /sbin/restorecon $XCONSOLE } } proc sendsigs_omit { global OMITDIR := '/run/sendsigs.omit.d' mkdir -p $OMITDIR ln -sf $PIDFILE $OMITDIR/rsyslog } matchstr $1 { start { log_daemon_msg "Starting $DESC" $RSYSLOGD create_xconsole do_start matchstr "$Status" { 0 { sendsigs_omit log_end_msg 0 } 1 { log_progress_msg "already started" log_end_msg 0 } * { log_end_msg 1 } } } stop { log_daemon_msg "Stopping $DESC" $RSYSLOGD do_stop matchstr "$Status" { 0 { log_end_msg 0 } 1 { log_progress_msg "already stopped" log_end_msg 0 } * { log_end_msg 1 } } } rotate { log_daemon_msg "Closing open files" $RSYSLOGD do_rotate log_end_msg $Status } restart|force-reload { $0 stop $0 start } status { status_of_proc -p $PIDFILE $DAEMON $RSYSLOGD && exit 0 || exit $Status } * { echo "Usage: $SCRIPTNAME {start|stop|rotate|restart|force-reload|status}" > !2 exit 3 } } : (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PATH) op: Equal rhs: {(/sbin) (Lit_Other ":") (/usr/sbin) (Lit_Other ":") (/bin) (Lit_Other ":") (/usr/bin)} spids: [53] ) ] spids: [53] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DESC) op: Equal rhs: {(DQ ("enhanced syslogd"))} spids: [62] ) ] spids: [62] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:NAME) op:Equal rhs:{(rsyslog)} spids:[67])] spids: [67] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:RSYSLOGD) op:Equal rhs:{(rsyslogd)} spids:[71])] spids: [71] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:DAEMON) op:Equal rhs:{(/usr/sbin/rsyslogd)} spids:[74])] spids: [74] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PIDFILE) op: Equal rhs: {(/var/run/rsyslogd.pid)} spids: [77] ) ] spids: [77] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SCRIPTNAME) op: Equal rhs: {(/etc/init.d/) ($ VSub_Name "$NAME")} spids: [81] ) ] spids: [81] ) (AndOr children: [ (C {(Lit_Other "[")} {(-x)} {(DQ ($ VSub_Name "$DAEMON"))} {(Lit_Other "]")}) (C {(exit)} {(0)}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(Lit_Other "[")} {(-r)} {(/etc/default/) ($ VSub_Name "$NAME")} {(Lit_Other "]")}) (C {(.)} {(/etc/default/) ($ VSub_Name "$NAME")}) ] op_id: Op_DAmp ) (C {(.)} {(/lib/lsb/init-functions)}) (FuncDef name: do_start body: (BraceGroup children: [ (C {(start-stop-daemon)} {(--start)} {(--quiet)} {(--pidfile)} {($ VSub_Name "$PIDFILE")} {(--exec)} {($ VSub_Name "$DAEMON")} {(--)} {($ VSub_Name "$RSYSLOGD_OPTIONS")} ) ] spids: [138] ) spids: [134 137] ) (FuncDef name: do_stop body: (BraceGroup children: [ (C {(start-stop-daemon)} {(--stop)} {(--quiet)} {(--retry) (Lit_Other "=") (TERM/30/KILL/5)} {(--pidfile)} {($ VSub_Name "$PIDFILE")} {(--exec)} {($ VSub_Name "$DAEMON")} ) ] spids: [182] ) spids: [178 181] ) (FuncDef name: do_rotate body: (BraceGroup children: [ (C {(start-stop-daemon)} {(--stop)} {(--signal)} {(HUP)} {(--quiet)} {(--pidfile)} {($ VSub_Name "$PIDFILE")} {(--exec)} {($ VSub_Name "$DAEMON")} ) ] spids: [235] ) spids: [231 234] ) (FuncDef name: create_xconsole body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:XCONSOLE) op: Equal rhs: {(/dev/xconsole)} spids: [266] ) ] spids: [266] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} { (DQ (CommandSubPart command_list: (CommandList children:[(C {(uname)} {(-s)})]) left_token: spids: [275 279] ) ) } {(KW_Bang "!") (Lit_Other "=")} {(DQ (Linux))} {(Lit_Other "]")} ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:XCONSOLE) op: Equal rhs: {(/run/xconsole)} spids: [295] ) ] spids: [295] ) (C {(ln)} {(-sf)} {($ VSub_Name "$XCONSOLE")} {(/dev/xconsole)}) ] spids: [-1 292] ) ] spids: [-1 308] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(KW_Bang "!")} {(-e)} {($ VSub_Name "$XCONSOLE")} {(Lit_Other "]")} ) terminator: ) ] action: [ (C {(mknod)} {(-m)} {(640)} {($ VSub_Name "$XCONSOLE")} {(p)}) (C {(chown)} {(root) (Lit_Other ":") (adm)} {($ VSub_Name "$XCONSOLE")}) (AndOr children: [ (C {(Lit_Other "[")} {(-x)} {(/sbin/restorecon)} {(Lit_Other "]")}) (C {(/sbin/restorecon)} {($ VSub_Name "$XCONSOLE")}) ] op_id: Op_DAmp ) ] spids: [-1 324] ) ] spids: [-1 362] ) ] spids: [263] ) spids: [259 262] ) (FuncDef name: sendsigs_omit body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OMITDIR) op: Equal rhs: {(/run/sendsigs.omit.d)} spids: [374] ) ] spids: [374] ) (C {(mkdir)} {(-p)} {($ VSub_Name "$OMITDIR")}) (C {(ln)} {(-sf)} {($ VSub_Name "$PIDFILE")} {($ VSub_Name "$OMITDIR") (/rsyslog)}) ] spids: [371] ) spids: [367 370] ) (Case to_match: {(DQ ($ VSub_Number "$1"))} arms: [ (case_arm pat_list: [{(start)}] action: [ (C {(log_daemon_msg)} {(DQ ("Starting ") ($ VSub_Name "$DESC"))} {(DQ ($ VSub_Name "$RSYSLOGD"))} ) (C {(create_xconsole)}) (C {(do_start)}) (Case to_match: {(DQ ($ VSub_QMark "$?"))} arms: [ (case_arm pat_list: [{(0)}] action: [(C {(sendsigs_omit)}) (C {(log_end_msg)} {(0)})] spids: [437 438 447 -1] ) (case_arm pat_list: [{(1)}] action: [(C {(log_progress_msg)} {(DQ ("already started"))}) (C {(log_end_msg)} {(0)})] spids: [450 451 464 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [(C {(log_end_msg)} {(1)})] spids: [467 468 474 -1] ) ] spids: [428 434 477] ) ] spids: [406 407 481 -1] ) (case_arm pat_list: [{(stop)}] action: [ (C {(log_daemon_msg)} {(DQ ("Stopping ") ($ VSub_Name "$DESC"))} {(DQ ($ VSub_Name "$RSYSLOGD"))} ) (C {(do_stop)}) (Case to_match: {(DQ ($ VSub_QMark "$?"))} arms: [ (case_arm pat_list: [{(0)}] action: [(C {(log_end_msg)} {(0)})] spids: [512 513 519 -1] ) (case_arm pat_list: [{(1)}] action: [(C {(log_progress_msg)} {(DQ ("already stopped"))}) (C {(log_end_msg)} {(0)})] spids: [522 523 536 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [(C {(log_end_msg)} {(1)})] spids: [539 540 546 -1] ) ] spids: [503 509 549] ) ] spids: [484 485 553 -1] ) (case_arm pat_list: [{(rotate)}] action: [ (C {(log_daemon_msg)} {(DQ ("Closing open files"))} {(DQ ($ VSub_Name "$RSYSLOGD"))}) (C {(do_rotate)}) (C {(log_end_msg)} {($ VSub_QMark "$?")}) ] spids: [556 557 579 -1] ) (case_arm pat_list: [{(restart)} {(force-reload)}] action: [(C {($ VSub_Number "$0")} {(stop)}) (C {($ VSub_Number "$0")} {(start)})] spids: [582 585 598 -1] ) (case_arm pat_list: [{(status)}] action: [ (AndOr children: [ (C {(status_of_proc)} {(-p)} {($ VSub_Name "$PIDFILE")} {($ VSub_Name "$DAEMON")} {($ VSub_Name "$RSYSLOGD")} ) (AndOr children: [(C {(exit)} {(0)}) (C {(exit)} {($ VSub_QMark "$?")})] op_id: Op_DPipe ) ] op_id: Op_DAmp ) ] spids: [601 602 628 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (SimpleCommand words: [ {(echo)} { (DQ ("Usage: ") ($ VSub_Name "$SCRIPTNAME") (" {start|stop|rotate|restart|force-reload|status}") ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[643])] ) (C {(exit)} {(3)}) ] spids: [631 632 652 -1] ) ] spids: [397 403 654] ) (C {(Lit_Other ":")}) ] )