]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - usr.sbin/cron/crontab/crontab.5
Merge llvm-project release/15.x llvmorg-15.0.0-rc2-40-gfbd2950d8d0d
[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 and lists are also allowed.
207 .Pp
208 The ``sixth'' field (the rest of the line) specifies the command to be
209 run.
210 One or more command options may precede the command to modify processing
211 behavior.
212 The entire command portion of the line, up to a newline or %
213 character, will be executed by
214 .Pa /bin/sh
215 or by the shell
216 specified in the
217 .Ev SHELL
218 variable of the cronfile.
219 Percent-signs (%) in the command, unless escaped with backslash
220 (\\), will be changed into newline characters, and all data
221 after the first % will be sent to the command as standard
222 input.
223 .Pp
224 The following command options can be supplied:
225 .Bl -tag -width Ds
226 .It Fl n
227 No mail is sent after a successful run.
228 The execution output will only be mailed if the command exits with a non-zero
229 exit code.
230 The
231 .Fl n
232 option is an attempt to cure potentially copious volumes of mail coming from
233 .Xr cron 8 .
234 .It Fl q
235 Execution will not be logged.
236 .El
237 .sp
238 Duplicate options are not allowed.
239 .Pp
240 Note: The day of a command's execution can be specified by two
241 fields \(em day of month, and day of week.
242 If both fields are
243 restricted (ie, are not *), the command will be run when
244 .Em either
245 field matches the current time.
246 For example,
247 ``30 4 1,15 * 5''
248 would cause a command to be run at 4:30 am on the 1st and 15th of each
249 month, plus every Friday.
250 .Pp
251 Instead of the first five fields,
252 a line may start with
253 .Sq @
254 symbol followed either by one of eight special strings or by a numeric value.
255 The recognized special strings are:
256 .Bd -literal -offset indent
257 string          meaning
258 ------          -------
259 @reboot         Run once, at startup of cron.
260 @yearly         Run once a year, "0 0 1 1 *".
261 @annually       (same as @yearly)
262 @monthly        Run once a month, "0 0 1 * *".
263 @weekly         Run once a week, "0 0 * * 0".
264 @daily          Run once a day, "0 0 * * *".
265 @midnight       (same as @daily)
266 @hourly         Run once an hour, "0 * * * *".
267 @every_minute   Run once a minute, "*/1 * * * *".
268 @every_second   Run once a second.
269 .Ed
270 .Pp
271 The
272 .Sq @
273 symbol followed by a numeric value has a special notion of running
274 a job that many seconds after completion of the previous invocation of
275 the job.
276 Unlike regular syntax, it guarantees not to overlap two or more
277 invocations of the same job during normal cron execution.
278 Note, however, that overlap may occur if the job is running when the file
279 containing the job is modified and subsequently reloaded.
280 The first run is scheduled for the specified number of seconds after cron
281 is started or the crontab entry is reloaded.
282 .Sh EXAMPLE CRON FILE
283 .Bd -literal
284
285 # use /bin/sh to run commands, overriding the default set by cron
286 SHELL=/bin/sh
287 # mail any output to `paul', no matter whose crontab this is
288 MAILTO=paul
289 #
290 # run five minutes after midnight, every day
291 5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
292 # run at 2:15pm on the first of every month -- output mailed to paul
293 15 14 1 * *     $HOME/bin/monthly
294 # run at 10 pm on weekdays, annoy Joe
295 0 22 * * 1-5    mail -s "It's 10pm" joe%Joe,%%Where are your kids?%
296 23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday"
297 5 4 * * sun     echo "run at 5 after 4 every sunday"
298 # run at 5 minutes intervals, no matter how long it takes
299 @300            svnlite up /usr/src
300 # run every minute, suppress logging
301 * * * * *       -q date
302 # run every minute, only send mail if ping fails
303 * * * * *       -n ping -c 1 freebsd.org
304 .Ed
305 .Sh SEE ALSO
306 .Xr crontab 1 ,
307 .Xr cron 8
308 .Sh EXTENSIONS
309 When specifying day of week, both day 0 and day 7 will be considered Sunday.
310 .Bx
311 and
312 .Tn ATT
313 seem to disagree about this.
314 .Pp
315 Lists and ranges are allowed to co-exist in the same field.
316 "1-3,7-9" would
317 be rejected by
318 .Tn ATT
319 or
320 .Bx
321 cron -- they want to see "1-3" or "7,8,9" ONLY.
322 .Pp
323 Ranges can include "steps", so "1-9/2" is the same as "1,3,5,7,9".
324 .Pp
325 Names of months or days of the week can be specified by name.
326 .Pp
327 Environment variables can be set in the crontab.
328 In
329 .Bx
330 or
331 .Tn ATT ,
332 the
333 environment handed to child processes is basically the one from
334 .Pa /etc/rc .
335 .Pp
336 Command output is mailed to the crontab owner
337 .No ( Bx
338 cannot do this), can be
339 mailed to a person other than the crontab owner (SysV cannot do this), or the
340 feature can be turned off and no mail will be sent at all (SysV cannot do this
341 either).
342 .Pp
343 All of the
344 .Sq @
345 directives that can appear in place of the first five fields
346 are extensions.
347 .Pp
348 Command processing can be modified using command options.
349 The
350 .Sq -q
351 option suppresses logging.
352 The
353 .Sq -n
354 option does not mail on successful run.
355 .Sh AUTHORS
356 .An Paul Vixie Aq Mt paul@vix.com
357 .Sh BUGS
358 If you are in one of the 70-odd countries that observe Daylight
359 Savings Time, jobs scheduled during the rollback or advance may be
360 affected if
361 .Xr cron 8
362 is not started with the
363 .Fl s
364 flag.
365 In general, it is not a good idea to schedule jobs during
366 this period if
367 .Xr cron 8
368 is not started with the
369 .Fl s
370 flag, which is enabled by default.
371 See
372 .Xr cron 8
373 for more details.
374 .Pp
375 For US timezones (except parts of AZ and HI) the time shift occurs at
376 2AM local time.
377 For others, the output of the
378 .Xr zdump 8
379 program's verbose
380 .Fl ( v )
381 option can be used to determine the moment of time shift.