#!/bin/sh # Start/stop the cron daemon. # ### BEGIN INIT INFO # Provides: cron # Required-Start: $remote_fs $syslog $time # Required-Stop: $remote_fs $syslog $time # Should-Start: $network $named slapd autofs ypbind nscd nslcd winbind # Should-Stop: $network $named slapd autofs ypbind nscd nslcd winbind # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Regular background program processing daemon # Description: cron is a standard UNIX program that runs user-specified # programs at periodic scheduled times. vixie cron adds a # number of features to the basic UNIX cron, including better # security and more powerful configuration options. ### END INIT INFO global PATH := '/bin:/usr/bin:/sbin:/usr/sbin' global DESC := '"cron daemon'" global NAME := 'cron' global DAEMON := '/usr/sbin/cron' global PIDFILE := '/var/run/crond.pid' global SCRIPTNAME := "/etc/init.d/"$NAME"" test -f $DAEMON || exit 0 source /lib/lsb/init-functions test -r /etc/default/cron && source /etc/default/cron # Read the system's locale and set cron's locale. This is only used for # setting the charset of mails generated by cron. To provide locale # information to tasks running under cron, see /etc/pam.d/cron. # # We read /etc/environment, but warn about locale information in # there because it should be in /etc/default/locale. proc parse_environment { for ENV_FILE in [/etc/environment /etc/default/locale] { test -r $ENV_FILE || continue test -s $ENV_FILE || continue for var in [LANG LANGUAGE LC_ALL LC_CTYPE] { global value := $[egrep "^$(var)=" $ENV_FILE | tail -n1 | cut -d= -f2] test -n $value && eval export $var=$value if test -n $value && test $ENV_FILE = /etc/environment { log_warning_msg "/etc/environment has been deprecated for locale information; use /etc/default/locale for $var=$value instead" } } } # Get the timezone set. if test -z $TZ -a -e /etc/timezone { global TZ := $[cat /etc/timezone] } } # Parse the system's environment if test $READ_ENV = "yes" { parse_environment } matchstr $1 { start { log_daemon_msg "Starting periodic command scheduler" "cron" start_daemon -p $PIDFILE $DAEMON $EXTRA_OPTS log_end_msg $Status } stop { log_daemon_msg "Stopping periodic command scheduler" "cron" killproc -p $PIDFILE $DAEMON global RETVAL := $Status test $RETVAL -eq 0 && test -e $PIDFILE && rm -f $PIDFILE log_end_msg $RETVAL } restart { log_daemon_msg "Restarting periodic command scheduler" "cron" $0 stop $0 start } reload|force-reload { log_daemon_msg "Reloading configuration files for periodic command scheduler" "cron" # cron reloads automatically log_end_msg 0 } status { status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $Status } * { log_action_msg "Usage: /etc/init.d/cron {start|stop|status|restart|reload|force-reload}" exit 2 } } exit 0 (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PATH) op: Equal rhs: {(/bin) (Lit_Other ":") (/usr/bin) (Lit_Other ":") (/sbin) (Lit_Other ":") (/usr/sbin)} spids: [52] ) ] spids: [52] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:DESC) op:Equal rhs:{(DQ ("cron daemon"))} spids:[61])] spids: [61] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:NAME) op:Equal rhs:{(cron)} spids:[66])] spids: [66] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:DAEMON) op:Equal rhs:{(/usr/sbin/cron)} spids:[69])] spids: [69] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:PIDFILE) op:Equal rhs:{(/var/run/crond.pid)} spids:[72])] spids: [72] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SCRIPTNAME) op: Equal rhs: {(/etc/init.d/) (DQ ($ VSub_Name "$NAME"))} spids: [75] ) ] spids: [75] ) (AndOr children: [(C {(test)} {(-f)} {($ VSub_Name "$DAEMON")}) (C {(exit)} {(0)})] op_id: Op_DPipe ) (C {(.)} {(/lib/lsb/init-functions)}) (AndOr children: [ (C {(Lit_Other "[")} {(-r)} {(/etc/default/cron)} {(Lit_Other "]")}) (C {(.)} {(/etc/default/cron)}) ] op_id: Op_DAmp ) (FuncDef name: parse_environment body: (BraceGroup children: [ (ForEach iter_name: ENV_FILE iter_words: [{(/etc/environment)} {(/etc/default/locale)}] do_arg_iter: False body: (DoGroup children: [ (AndOr children: [ (C {(Lit_Other "[")} {(-r)} {(DQ ($ VSub_Name "$ENV_FILE"))} {(Lit_Other "]")}) (ControlFlow token:) ] op_id: Op_DPipe ) (AndOr children: [ (C {(Lit_Other "[")} {(-s)} {(DQ ($ VSub_Name "$ENV_FILE"))} {(Lit_Other "]")}) (ControlFlow token:) ] op_id: Op_DPipe ) (ForEach iter_name: var iter_words: [{(LANG)} {(LANGUAGE)} {(LC_ALL)} {(LC_CTYPE)}] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(egrep)} {(DQ ("^") (${ VSub_Name var) ("="))} {(DQ ($ VSub_Name "$ENV_FILE"))} ) (C {(tail)} {(-n1)}) (C {(cut)} {(-d) (Lit_Other "=")} {(-f2)}) ] negated: False ) ] ) left_token: spids: [206 235] ) } spids: [205] ) ] spids: [205] ) (AndOr children: [ (C {(Lit_Other "[")} {(-n)} {(DQ ($ VSub_Name "$value"))} {(Lit_Other "]")} ) (C {(eval)} {(export)} {($ VSub_Name "$var") (Lit_Other "=") ($ VSub_Name "$value")} ) ] op_id: Op_DAmp ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (C {(Lit_Other "[")} {(-n)} {(DQ ($ VSub_Name "$value"))} {(Lit_Other "]")} ) (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$ENV_FILE"))} {(Lit_Other "=")} {(/etc/environment)} {(Lit_Other "]")} ) ] op_id: Op_DAmp ) terminator: ) ] action: [ (C {(log_warning_msg)} { (DQ ( "/etc/environment has been deprecated for locale information; use /etc/default/locale for " ) ($ VSub_Name "$var") ("=") ($ VSub_Name "$value") (" instead") ) } ) ] spids: [-1 287] ) ] spids: [-1 301] ) ] spids: [202 304] ) spids: [192 200] ) ] spids: [153 307] ) spids: [147 151] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$TZ"))} {(-a)} {(-e)} {(/etc/timezone)} {(Lit_Other "]")} ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TZ) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(cat)} {(/etc/timezone)})]) left_token: spids: [337 341] ) } spids: [336] ) ] spids: [336] ) ] spids: [-1 333] ) ] spids: [-1 345] ) ] spids: [139] ) spids: [133 137] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$READ_ENV"))} {(Lit_Other "=")} {(DQ (yes))} {(Lit_Other "]")} ) terminator: ) ] action: [(C {(parse_environment)})] spids: [-1 371] ) ] spids: [-1 376] ) (Case to_match: {(DQ ($ VSub_Number "$1"))} arms: [ (case_arm pat_list: [{(start)}] action: [ (C {(log_daemon_msg)} {(DQ ("Starting periodic command scheduler"))} {(DQ (cron))}) (C {(start_daemon)} {(-p)} {($ VSub_Name "$PIDFILE")} {($ VSub_Name "$DAEMON")} {($ VSub_Name "$EXTRA_OPTS")} ) (C {(log_end_msg)} {($ VSub_QMark "$?")}) ] spids: [388 389 418 -1] ) (case_arm pat_list: [{(stop)}] action: [ (C {(log_daemon_msg)} {(DQ ("Stopping periodic command scheduler"))} {(DQ (cron))}) (C {(killproc)} {(-p)} {($ VSub_Name "$PIDFILE")} {($ VSub_Name "$DAEMON")}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RETVAL) op: Equal rhs: {($ VSub_QMark "$?")} spids: [443] ) ] spids: [443] ) (AndOr children: [ (C {(Lit_Other "[")} {($ VSub_Name "$RETVAL")} {(-eq)} {(0)} {(Lit_Other "]")}) (AndOr children: [ (C {(Lit_Other "[")} {(-e)} {(DQ ($ VSub_Name "$PIDFILE"))} {(Lit_Other "]")}) (C {(rm)} {(-f)} {($ VSub_Name "$PIDFILE")}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) (C {(log_end_msg)} {($ VSub_Name "$RETVAL")}) ] spids: [420 421 483 -1] ) (case_arm pat_list: [{(restart)}] action: [ (C {(log_daemon_msg)} {(DQ ("Restarting periodic command scheduler"))} {(DQ (cron))}) (C {($ VSub_Number "$0")} {(stop)}) (C {($ VSub_Number "$0")} {(start)}) ] spids: [485 486 510 -1] ) (case_arm pat_list: [{(reload)} {(force-reload)}] action: [ (C {(log_daemon_msg)} {(DQ ("Reloading configuration files for periodic command scheduler"))} {(DQ (cron))} ) (C {(log_end_msg)} {(0)}) ] spids: [512 515 537 -1] ) (case_arm pat_list: [{(status)}] action: [ (AndOr children: [ (C {(status_of_proc)} {(-p)} {($ VSub_Name "$PIDFILE")} {($ VSub_Name "$DAEMON")} {($ VSub_Name "$NAME")} ) (AndOr children: [(C {(exit)} {(0)}) (C {(exit)} {($ VSub_QMark "$?")})] op_id: Op_DPipe ) ] op_id: Op_DAmp ) ] spids: [539 540 566 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (C {(log_action_msg)} {(DQ ("Usage: /etc/init.d/cron {start|stop|status|restart|reload|force-reload}"))} ) (C {(exit)} {(2)}) ] spids: [568 569 583 -1] ) ] spids: [380 386 585] ) (C {(exit)} {(0)}) ] )