]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - usr.sbin/cron/crontab/crontab.5
OpenZFS: MFV 2.0-rc3-gfc5966
[FreeBSD/FreeBSD.git] / usr.sbin / cron / crontab / crontab.5
1 .\"/* Copyright 1988,1990,1993,1994 by Paul Vixie
2 .\" * All rights reserved
3 .\" *
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
11 .\" * user.
12 .\" *
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
16 .\" */
17 .\"
18 .\" $FreeBSD$
19 .\"
20 .Dd March 29, 2020
21 .Dt CRONTAB 5
22 .Os
23 .Sh NAME
24 .Nm crontab
25 .Nd tables for driving cron
26 .Sh DESCRIPTION
27 A
28 .Nm
29 file contains instructions to the
30 .Xr cron 8
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
36 .Xr su 1
37 as part of a cron command.
38 .Pp
39 Blank lines and leading spaces and tabs are ignored.
40 Lines whose first
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.
46 .Pp
47 An active line in a crontab will be either an environment setting or a cron
48 command.
49 An environment setting is of the form,
50 .Bd -literal
51     name = value
52 .Ed
53 .Pp
54 where the spaces around the equal-sign (=) are optional, and any subsequent
55 non-leading spaces in
56 .Em value
57 will be part of the value assigned to
58 .Em name .
59 The
60 .Em value
61 string may be placed in quotes (single or double, but matching) to preserve
62 leading or trailing blanks.
63 The
64 .Em name
65 string may also be placed in quote (single or double, but matching)
66 to preserve leading, trailing or inner blanks.
67 .Pp
68 Several environment variables are set up
69 automatically by the
70 .Xr cron 8
71 daemon.
72 .Ev SHELL
73 is set to
74 .Pa /bin/sh ,
75 and
76 .Ev LOGNAME
77 and
78 .Ev HOME
79 are set from the
80 .Pa /etc/passwd
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
85 and
86 .Pa ~/.login_conf .
87 (A setting of
88 .Ev HOME
89 in the login class will override the value from
90 .Pa /etc/passwd ,
91 but will not change the current directory when the command is
92 invoked, which can only be overridden with an explicit setting of
93 .Ev HOME
94 within the crontab file itself.)
95 If
96 .Ev PATH
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 .
99 .Ev HOME ,
100 .Ev PATH
101 and
102 .Ev SHELL ,
103 and any variables set from the login class,
104 may be overridden by settings in the crontab;
105 .Ev LOGNAME
106 may not.
107 .Pp
108 (Another note: the
109 .Ev LOGNAME
110 variable is sometimes called
111 .Ev USER
112 on
113 .Bx
114 systems...
115 On these systems,
116 .Ev USER
117 will be set also).
118 .Pp
119 If
120 .Xr cron 8
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).
124 If
125 .Ev MAILTO
126 is defined (and non-empty), mail is
127 sent to the user so named.
128 If
129 .Ev MAILFROM
130 is defined (and non-empty), its value will be used as the from address.
131 .Ev MAILTO
132 may also be used to direct mail to multiple recipients
133 by separating recipient users with a comma.
134 If
135 .Ev MAILTO
136 is defined but empty (MAILTO=""), no
137 mail will be sent.
138 Otherwise mail is sent to the owner of the crontab.
139 This
140 option is useful if you decide on
141 .Pa /bin/mail
142 instead of
143 .Pa /usr/lib/sendmail
144 as
145 your mailer when you install cron --
146 .Pa /bin/mail
147 does not do aliasing, and UUCP
148 usually does not read its mail.
149 .Pp
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
158 .Xr cron 8
159 when the minute, hour, and month of year fields match the current time,
160 .Em and
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).
163 .Xr cron 8
164 examines cron entries once every minute.
165 The time and date fields are:
166 .Bd -literal -offset indent
167 field         allowed values
168 -----         --------------
169 minute        0-59
170 hour          0-23
171 day of month  1-31
172 month         1-12 (or names, see below)
173 day of week   0-7 (0 or 7 is Sun, or use names)
174 .Ed
175 .Pp
176 A field may be an asterisk (*), which always stands for ``first\-last''.
177 .Pp
178 Ranges of numbers are allowed.
179 Ranges are two numbers separated
180 with a hyphen.
181 The specified range is inclusive.
182 For example,
183 8-11 for an ``hours'' entry specifies execution at hours 8, 9, 10
184 and 11.
185 .Pp
186 Lists are allowed.
187 A list is a set of numbers (or ranges)
188 separated by commas.
189 Examples: ``1,2,5,9'', ``0-4,8-12''.
190 .Pp
191 Step values can be used in conjunction with ranges.
192 Following
193 a range with ``/<number>'' specifies skips of the number's value
194 through the range.
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'').
198 Steps are
199 also permitted after an asterisk, so if you want to say ``every two
200 hours'', just use ``*/2''.
201 .Pp
202 Names can also be used for the ``month'' and ``day of week''
203 fields.
204 Use the first three letters of the particular
205 day or month (case does not matter).
206 Ranges or
207 lists of names are not allowed.
208 .Pp
209 The ``sixth'' field (the rest of the line) specifies the command to be
210 run.
211 One or more command options may precede the command to modify processing
212 behavior.
213 The entire command portion of the line, up to a newline or %
214 character, will be executed by
215 .Pa /bin/sh
216 or by the shell
217 specified in the
218 .Ev SHELL
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
223 input.
224 .Pp
225 The following command options can be supplied:
226 .Bl -tag -width Ds
227 .It Fl n
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
230 exit code.
231 The
232 .Fl n
233 option is an attempt to cure potentially copious volumes of mail coming from
234 .Xr cron 8 .
235 .It Fl q
236 Execution will not be logged.
237 .El
238 .sp
239 Duplicate options are not allowed.
240 .Pp
241 Note: The day of a command's execution can be specified by two
242 fields \(em day of month, and day of week.
243 If both fields are
244 restricted (ie, are not *), the command will be run when
245 .Em either
246 field matches the current time.
247 For example,
248 ``30 4 1,15 * 5''
249 would cause a command to be run at 4:30 am on the 1st and 15th of each
250 month, plus every Friday.
251 .Pp
252 Instead of the first five fields,
253 a line may start with
254 .Sq @
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
258 string          meaning
259 ------          -------
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.
270 .Ed
271 .Pp
272 The
273 .Sq @
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
276 the job.
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
284 .Bd -literal
285
286 # use /bin/sh to run commands, overriding the default set by cron
287 SHELL=/bin/sh
288 # mail any output to `paul', no matter whose crontab this is
289 MAILTO=paul
290 #
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
302 * * * * *       -q date
303 # run every minute, only send mail if ping fails
304 * * * * *       -n ping -c 1 freebsd.org
305 .Ed
306 .Sh SEE ALSO
307 .Xr crontab 1 ,
308 .Xr cron 8
309 .Sh EXTENSIONS
310 When specifying day of week, both day 0 and day 7 will be considered Sunday.
311 .Bx
312 and
313 .Tn ATT
314 seem to disagree about this.
315 .Pp
316 Lists and ranges are allowed to co-exist in the same field.
317 "1-3,7-9" would
318 be rejected by
319 .Tn ATT
320 or
321 .Bx
322 cron -- they want to see "1-3" or "7,8,9" ONLY.
323 .Pp
324 Ranges can include "steps", so "1-9/2" is the same as "1,3,5,7,9".
325 .Pp
326 Names of months or days of the week can be specified by name.
327 .Pp
328 Environment variables can be set in the crontab.
329 In
330 .Bx
331 or
332 .Tn ATT ,
333 the
334 environment handed to child processes is basically the one from
335 .Pa /etc/rc .
336 .Pp
337 Command output is mailed to the crontab owner
338 .No ( Bx
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
342 either).
343 .Pp
344 All of the
345 .Sq @
346 directives that can appear in place of the first five fields
347 are extensions.
348 .Pp
349 Command processing can be modified using command options.
350 The
351 .Sq -q
352 option suppresses logging.
353 The
354 .Sq -n
355 option does not mail on successful run.
356 .Sh AUTHORS
357 .An Paul Vixie Aq Mt paul@vix.com
358 .Sh BUGS
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
361 affected if
362 .Xr cron 8
363 is not started with the
364 .Fl s
365 flag.
366 In general, it is not a good idea to schedule jobs during
367 this period if
368 .Xr cron 8
369 is not started with the
370 .Fl s
371 flag, which is enabled by default.
372 See
373 .Xr cron 8
374 for more details.
375 .Pp
376 For US timezones (except parts of AZ and HI) the time shift occurs at
377 2AM local time.
378 For others, the output of the
379 .Xr zdump 8
380 program's verbose
381 .Fl ( v )
382 option can be used to determine the moment of time shift.