Cron Notes
From Noah.org
Jump to navigationJump to search
See also Bash notes for some techniques to prevent multiple cron job from running at the same time. This happens if a cron job has not finished before cron tries to start it again.
Cron documentation comment
I have huge, horrible, complex cron files. I stick this big comment at the top of the /etc/crontab file so I don't have to keep going back to the man page.
# The time and date fields are: # field allowed values # ----- -------------- # minute 0-59 # hour 0-23 # day of month 1-31 # month 1-12 (or names, see below) # day of week 0-7 (0 and 7 are Sunday. Can also use names.) # 0 sun, 1 mon, 2 tue, 3 wed, 4 thr, 5 fri, 6 sat, 7 sun # A field may be an asterisk (*), which always stands for "first-last". # # Ranges of numbers are allowed. Ranges are two numbers separated with a hyphen. # The specified range is inclusive. For example, 8-11 for an "hours" entry # specifies execution at hours 8, 9, 10 and 11. # # Lists are allowed. A list is a set of numbers (or ranges) separated by commas. # Examples: "1,2,5,9", "0-4,8-12". # # Step values can be used in conjunction with ranges. Following a range with # "/<number>" specifies skips of the number's value through the range. # For example, "0-23/2" can be used in the hours field to specify command # execution every other hour (the alternative in the V7 standard is # "0,2,4,6,8,10,12,14,16,18,20,22"). Steps are also permitted after an # asterisk, so if you want to say "every two hours", just use "*/2". # Note: The day of a command's execution can be specified by two fields # -- day of month, and day of week. If both fields are restricted # (that is, are not *), the command will be run when either field matches the # current time. For example, "30 4 1,15 * 5" would cause a command # to be run at 4:30 am on the 1st and 15th of each month, plus every Friday. # # The "sixth" field (the rest of the line) specifies the command to be # run. The entire command portion of the line, up to a newline or % # character, will be executed by /bin/sh or by the shell specified in the # SHELL variable of the crontab file. Percent-signs (%) in the command, # unless escaped with backslash (\), will be changed into newline characters, # and all data after the first % will be sent to the command as standard input. # There is no way to split a single command line onto multiple lines, # ala the shell's trailing "\". # # Example system /etc/crontab excerpt: # # run five minutes after midnight, every day # 5 0 * * * root /usr/sbin/ntpdate time.nist.gov >> /var/log/ntpdate.log 2>&1 # # run at 2:15pm on the first of every month # 15 14 1 * * root /bin/foo > /dev/null 2>&1 # # run at 11 pm on weekdays # 0 23 * * 1-5 root mail -s "It's 11pm" joe%Joe,%%Where are your kids?% # 23 0-23/2 * * * root echo "run 23 minutes after midn, 2am, 4am ..., everyday" # 5 4 * * sun root echo "run at 5 after 4 every sunday"