1 .\"/* Copyright 1988,1990,1993,1994 by Paul Vixie
2 .\" * All rights reserved
4 .\" * Distribute freely, except: don't remove my name from the source or
5 .\" * documentation (don't take credit for my work), mark your changes (don't
6 .\" * get me blamed for your possible bugs), don't alter or remove this
7 .\" * notice. May be sold if buildable source is provided to buyer. No
8 .\" * warrantee of any kind, express or implied, is included with this
9 .\" * software; use at your own risk, responsibility for damages (if any) to
10 .\" * anyone resulting from the use of this software rests entirely with the
13 .\" * Send bug reports, bug fixes, enhancements, requests, flames, etc., and
14 .\" * I'll try to keep a version up to date. I can be reached as follows:
15 .\" * Paul Vixie <paul@vix.com> uunet!decwrl!vixie!paul
25 .Nd tables for driving cron
29 file contains instructions to the
31 daemon of the general form: ``run this command at this time on this date''.
32 Each user has their own crontab, and commands in any given crontab will be
33 executed as the user who owns the crontab.
34 Uucp and News will usually have
35 their own crontabs, eliminating the need for explicitly running
37 as part of a cron command.
39 Blank lines and leading spaces and tabs are ignored.
41 non-space character is a pound-sign (#) are comments, and are ignored.
42 Note that comments are not allowed on the same line as cron commands, since
43 they will be taken to be part of the command.
44 Similarly, comments are not
45 allowed on the same line as environment variable settings.
47 An active line in a crontab will be either an environment setting or a cron
49 An environment setting is of the form,
54 where the spaces around the equal-sign (=) are optional, and any subsequent
57 will be part of the value assigned to
61 string may be placed in quotes (single or double, but matching) to preserve
62 leading or trailing blanks.
65 string may also be placed in quote (single or double, but matching)
66 to preserve leading, trailing or inner blanks.
68 Several environment variables are set up
81 line of the crontab's owner.
82 In addition, the environment variables of the
83 user's login class will be set from
84 .Pa /etc/login.conf.db
89 in the login class will override the value from
91 but will not change the current directory when the command is
92 invoked, which can only be overridden with an explicit setting of
94 within the crontab file itself.)
97 is not set by any other means, it is defaulted to
98 .Pa /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin .
103 and any variables set from the login class,
104 may be overridden by settings in the crontab;
110 variable is sometimes called
121 has any reason to send mail as a result of running commands in
122 ``this'' crontab, it will respect the following settings which may be
123 defined in the crontab (but which are not taken from the login class).
126 is defined (and non-empty), mail is
127 sent to the user so named.
130 is defined (and non-empty), its value will be used as the from address.
132 may also be used to direct mail to multiple recipients
133 by separating recipient users with a comma.
136 is defined but empty (MAILTO=""), no
138 Otherwise mail is sent to the owner of the crontab.
140 option is useful if you decide on
143 .Pa /usr/lib/sendmail
145 your mailer when you install cron --
147 does not do aliasing, and UUCP
148 usually does not read its mail.
150 The format of a cron command is very much the V7 standard, with a number of
151 upward-compatible extensions.
152 Each line has five time and date fields,
153 followed by a user name
154 (with optional ``:<group>'' and ``/<login-class>'' suffixes)
155 if this is the system crontab file,
156 followed by a command.
157 Commands are executed by
159 when the minute, hour, and month of year fields match the current time,
161 when at least one of the two day fields (day of month, or day of week)
162 matches the current time (see ``Note'' below).
164 examines cron entries once every minute.
165 The time and date fields are:
166 .Bd -literal -offset indent
172 month 1-12 (or names, see below)
173 day of week 0-7 (0 or 7 is Sun, or use names)
176 A field may be an asterisk (*), which always stands for ``first\-last''.
178 Ranges of numbers are allowed.
179 Ranges are two numbers separated
181 The specified range is inclusive.
183 8-11 for an ``hours'' entry specifies execution at hours 8, 9, 10
187 A list is a set of numbers (or ranges)
189 Examples: ``1,2,5,9'', ``0-4,8-12''.
191 Step values can be used in conjunction with ranges.
193 a range with ``/<number>'' specifies skips of the number's value
195 For example, ``0-23/2'' can be used in the hours
196 field to specify command execution every other hour (the alternative
197 in the V7 standard is ``0,2,4,6,8,10,12,14,16,18,20,22'').
199 also permitted after an asterisk, so if you want to say ``every two
200 hours'', just use ``*/2''.
202 Names can also be used for the ``month'' and ``day of week''
204 Use the first three letters of the particular
205 day or month (case does not matter).
207 lists of names are not allowed.
209 The ``sixth'' field (the rest of the line) specifies the command to be
211 One or more command options may precede the command to modify processing
213 The entire command portion of the line, up to a newline or %
214 character, will be executed by
219 variable of the cronfile.
220 Percent-signs (%) in the command, unless escaped with backslash
221 (\\), will be changed into newline characters, and all data
222 after the first % will be sent to the command as standard
225 The following command options can be supplied:
228 No mail is sent after a successful run.
229 The execution output will only be mailed if the command exits with a non-zero
233 option is an attempt to cure potentially copious volumes of mail coming from
236 Execution will not be logged.
239 Duplicate options are not allowed.
241 Note: The day of a command's execution can be specified by two
242 fields \(em day of month, and day of week.
244 restricted (ie, are not *), the command will be run when
246 field matches the current time.
249 would cause a command to be run at 4:30 am on the 1st and 15th of each
250 month, plus every Friday.
252 Instead of the first five fields,
253 a line may start with
255 symbol followed either by one of eight special strings or by a numeric value.
256 The recognized special strings are:
257 .Bd -literal -offset indent
260 @reboot Run once, at startup of cron.
261 @yearly Run once a year, "0 0 1 1 *".
262 @annually (same as @yearly)
263 @monthly Run once a month, "0 0 1 * *".
264 @weekly Run once a week, "0 0 * * 0".
265 @daily Run once a day, "0 0 * * *".
266 @midnight (same as @daily)
267 @hourly Run once an hour, "0 * * * *".
268 @every_minute Run once a minute, "*/1 * * * *".
269 @every_second Run once a second.
274 symbol followed by a numeric value has a special notion of running
275 a job that many seconds after completion of the previous invocation of
277 Unlike regular syntax, it guarantees not to overlap two or more
278 invocations of the same job during normal cron execution.
279 Note, however, that overlap may occur if the job is running when the file
280 containing the job is modified and subsequently reloaded.
281 The first run is scheduled for the specified number of seconds after cron
282 is started or the crontab entry is reloaded.
283 .Sh EXAMPLE CRON FILE
286 # use /bin/sh to run commands, overriding the default set by cron
288 # mail any output to `paul', no matter whose crontab this is
291 # run five minutes after midnight, every day
292 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
293 # run at 2:15pm on the first of every month -- output mailed to paul
294 15 14 1 * * $HOME/bin/monthly
295 # run at 10 pm on weekdays, annoy Joe
296 0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?%
297 23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday"
298 5 4 * * sun echo "run at 5 after 4 every sunday"
299 # run at 5 minutes intervals, no matter how long it takes
300 @300 svnlite up /usr/src
301 # run every minute, suppress logging
303 # run every minute, only send mail if ping fails
304 * * * * * -n ping -c 1 freebsd.org
310 When specifying day of week, both day 0 and day 7 will be considered Sunday.
314 seem to disagree about this.
316 Lists and ranges are allowed to co-exist in the same field.
322 cron -- they want to see "1-3" or "7,8,9" ONLY.
324 Ranges can include "steps", so "1-9/2" is the same as "1,3,5,7,9".
326 Names of months or days of the week can be specified by name.
328 Environment variables can be set in the crontab.
334 environment handed to child processes is basically the one from
337 Command output is mailed to the crontab owner
339 cannot do this), can be
340 mailed to a person other than the crontab owner (SysV cannot do this), or the
341 feature can be turned off and no mail will be sent at all (SysV cannot do this
346 directives that can appear in place of the first five fields
349 Command processing can be modified using command options.
352 option suppresses logging.
355 option does not mail on successful run.
357 .An Paul Vixie Aq Mt paul@vix.com
359 If you are in one of the 70-odd countries that observe Daylight
360 Savings Time, jobs scheduled during the rollback or advance may be
363 is not started with the
366 In general, it is not a good idea to schedule jobs during
369 is not started with the
371 flag, which is enabled by default.
376 For US timezones (except parts of AZ and HI) the time shift occurs at
378 For others, the output of the
382 option can be used to determine the moment of time shift.