xref: /freebsd/usr.sbin/cron/crontab/crontab.5 (revision a35d88931c87cfe6bd38f01d7bad22140b3b38f3)
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 January 24, 1994
21.Dt CRONTAB 5
22.Os
23.Sh NAME
24.Nm crontab
25.Nd tables for driving cron
26.Sh DESCRIPTION
27A
28.Nm
29file contains instructions to the
30.Xr cron 8
31daemon of the general form: ``run this command at this time on this date''.
32Each user has their own crontab, and commands in any given crontab will be
33executed as the user who owns the crontab.
34Uucp and News will usually have
35their own crontabs, eliminating the need for explicitly running
36.Xr su 1
37as part of a cron command.
38.Pp
39Blank lines and leading spaces and tabs are ignored.
40Lines whose first
41non-space character is a pound-sign (#) are comments, and are ignored.
42Note that comments are not allowed on the same line as cron commands, since
43they will be taken to be part of the command.
44Similarly, comments are not
45allowed on the same line as environment variable settings.
46.Pp
47An active line in a crontab will be either an environment setting or a cron
48command.
49An environment setting is of the form,
50.Bd -literal
51    name = value
52.Ed
53.Pp
54where the spaces around the equal-sign (=) are optional, and any subsequent
55non-leading spaces in
56.Em value
57will be part of the value assigned to
58.Em name .
59The
60.Em value
61string may be placed in quotes (single or double, but matching) to preserve
62leading or trailing blanks.
63The
64.Em name
65string may also be placed in quote (single or double, but matching)
66to preserve leading, trailing or inner blanks.
67.Pp
68Several environment variables are set up
69automatically by the
70.Xr cron 8
71daemon.
72.Ev SHELL
73is set to
74.Pa /bin/sh ,
75and
76.Ev LOGNAME
77and
78.Ev HOME
79are set from the
80.Pa /etc/passwd
81line of the crontab's owner.
82.Ev HOME
83and
84.Ev SHELL
85may be overridden by settings in the crontab;
86.Ev LOGNAME
87may not.
88.Pp
89(Another note: the
90.Ev LOGNAME
91variable is sometimes called
92.Ev USER
93on
94.Bx
95systems...
96On these systems,
97.Ev USER
98will be set also).
99.Pp
100In addition to
101.Ev LOGNAME ,
102.Ev HOME ,
103and
104.Ev SHELL ,
105.Xr cron 8
106will look at
107.Ev MAILTO
108if it has any reason to send mail as a result of running
109commands in ``this'' crontab.
110If
111.Ev MAILTO
112is defined (and non-empty), mail is
113sent to the user so named.
114.Ev MAILTO
115may also be used to direct mail to multiple recipients
116by seperating recipient users with a comma.
117If
118.Ev MAILTO
119is defined but empty (MAILTO=""), no
120mail will be sent.
121Otherwise mail is sent to the owner of the crontab.
122This
123option is useful if you decide on
124.Pa /bin/mail
125instead of
126.Pa /usr/lib/sendmail
127as
128your mailer when you install cron --
129.Pa /bin/mail
130doesn't do aliasing, and UUCP
131usually doesn't read its mail.
132.Pp
133The format of a cron command is very much the V7 standard, with a number of
134upward-compatible extensions.
135Each line has five time and date fields,
136followed by a user name
137(with optional ``:<group>'' and ``/<login-class>'' suffixes)
138if this is the system crontab file,
139followed by a command.
140Commands are executed by
141.Xr cron 8
142when the minute, hour, and month of year fields match the current time,
143.Em and
144when at least one of the two day fields (day of month, or day of week)
145matches the current time (see ``Note'' below).
146.Xr cron 8
147examines cron entries once every minute.
148The time and date fields are:
149.Bd -literal -offset indent
150field         allowed values
151-----         --------------
152minute        0-59
153hour          0-23
154day of month  1-31
155month         1-12 (or names, see below)
156day of week   0-7 (0 or 7 is Sun, or use names)
157.Ed
158.Pp
159A field may be an asterisk (*), which always stands for ``first\-last''.
160.Pp
161Ranges of numbers are allowed.
162Ranges are two numbers separated
163with a hyphen.
164The specified range is inclusive.
165For example,
1668-11 for an ``hours'' entry specifies execution at hours 8, 9, 10
167and 11.
168.Pp
169Lists are allowed.
170A list is a set of numbers (or ranges)
171separated by commas.
172Examples: ``1,2,5,9'', ``0-4,8-12''.
173.Pp
174Step values can be used in conjunction with ranges.
175Following
176a range with ``/<number>'' specifies skips of the number's value
177through the range.
178For example, ``0-23/2'' can be used in the hours
179field to specify command execution every other hour (the alternative
180in the V7 standard is ``0,2,4,6,8,10,12,14,16,18,20,22'').
181Steps are
182also permitted after an asterisk, so if you want to say ``every two
183hours'', just use ``*/2''.
184.Pp
185Names can also be used for the ``month'' and ``day of week''
186fields.
187Use the first three letters of the particular
188day or month (case doesn't matter).
189Ranges or
190lists of names are not allowed.
191.Pp
192The ``sixth'' field (the rest of the line) specifies the command to be
193run.
194The entire command portion of the line, up to a newline or %
195character, will be executed by
196.Pa /bin/sh
197or by the shell
198specified in the
199.Ev SHELL
200variable of the cronfile.
201Percent-signs (%) in the command, unless escaped with backslash
202(\\), will be changed into newline characters, and all data
203after the first % will be sent to the command as standard
204input.
205.Pp
206Note: The day of a command's execution can be specified by two
207fields \(em day of month, and day of week.
208If both fields are
209restricted (ie, aren't *), the command will be run when
210.Em either
211field matches the current time.
212For example,
213``30 4 1,15 * 5''
214would cause a command to be run at 4:30 am on the 1st and 15th of each
215month, plus every Friday.
216.Pp
217Instead of the first five fields,
218one of eight special strings may appear:
219.Bd -literal -offset indent
220string		meaning
221------		-------
222@reboot		Run once, at startup.
223@yearly		Run once a year, "0 0 1 1 *".
224@annually	(same as @yearly)
225@monthly	Run once a month, "0 0 1 * *".
226@weekly		Run once a week, "0 0 * * 0".
227@daily		Run once a day, "0 0 * * *".
228@midnight	(same as @daily)
229@hourly		Run once an hour, "0 * * * *".
230.Ed
231.Sh EXAMPLE CRON FILE
232.Bd -literal
233
234# use /bin/sh to run commands, overriding the default set by cron
235SHELL=/bin/sh
236# mail any output to `paul', no matter whose crontab this is
237MAILTO=paul
238#
239# run five minutes after midnight, every day
2405 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
241# run at 2:15pm on the first of every month -- output mailed to paul
24215 14 1 * *     $HOME/bin/monthly
243# run at 10 pm on weekdays, annoy Joe
2440 22 * * 1-5	mail -s "It's 10pm" joe%Joe,%%Where are your kids?%
24523 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday"
2465 4 * * sun     echo "run at 5 after 4 every sunday"
247.Ed
248.Sh SEE ALSO
249.Xr crontab 1 ,
250.Xr cron 8
251.Sh EXTENSIONS
252When specifying day of week, both day 0 and day 7 will be considered Sunday.
253.Bx
254and
255.Tn ATT
256seem to disagree about this.
257.Pp
258Lists and ranges are allowed to co-exist in the same field.
259"1-3,7-9" would
260be rejected by
261.Tn ATT
262or
263.Bx
264cron -- they want to see "1-3" or "7,8,9" ONLY.
265.Pp
266Ranges can include "steps", so "1-9/2" is the same as "1,3,5,7,9".
267.Pp
268Names of months or days of the week can be specified by name.
269.Pp
270Environment variables can be set in the crontab.
271In
272.Bx
273or
274.Tn ATT ,
275the
276environment handed to child processes is basically the one from
277.Pa /etc/rc .
278.Pp
279Command output is mailed to the crontab owner
280.No ( Bx
281can't do this), can be
282mailed to a person other than the crontab owner (SysV can't do this), or the
283feature can be turned off and no mail will be sent at all (SysV can't do this
284either).
285.Pp
286All of the
287.Sq @
288commands that can appear in place of the first five fields
289are extensions.
290.Sh AUTHORS
291.An Paul Vixie Aq paul@vix.com
292.Sh BUGS
293If you're in one of the 70-odd countries that observe Daylight
294Savings Time, jobs scheduled during the rollback or advance will be
295affected.
296In general, it's not a good idea to schedule jobs during
297this period.
298.Pp
299For US timezones (except parts of IN, AZ, and HI) the time shift occurs at
3002AM local time.
301For others, the output of the
302.Xr zdump 8
303program's verbose
304.Fl ( v )
305option can be used to determine the moment of time shift.
306