xref: /freebsd/usr.sbin/cron/cron/cron.8 (revision 2f513db7)
1.\"/* Copyright 1988,1990,1993 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 April 15, 2019
21.Dt CRON 8
22.Os
23.Sh NAME
24.Nm cron
25.Nd daemon to execute scheduled commands (Vixie Cron)
26.Sh SYNOPSIS
27.Nm
28.Op Fl j Ar jitter
29.Op Fl J Ar rootjitter
30.Op Fl m Ar mailto
31.Op Fl n
32.Op Fl s
33.Op Fl o
34.Op Fl x Ar debugflag Ns Op , Ns Ar ...
35.Sh DESCRIPTION
36The
37.Nm
38utility should be started from
39.Pa /etc/rc
40or
41.Pa /etc/rc.local .
42It will return immediately,
43so you do not need to start it with '&'.
44.Pp
45The
46.Nm
47utility searches
48.Pa /var/cron/tabs
49for crontab files which are named after accounts in
50.Pa /etc/passwd ;
51crontabs found are loaded into memory.
52The
53.Nm
54utility also searches for
55.Pa /etc/crontab
56and files in
57.Pa /etc/cron.d
58and
59.Pa /usr/local/etc/cron.d
60which are in a different format (see
61.Xr crontab 5 ) .
62.Pp
63The
64.Nm
65utility
66then wakes up every minute, examining all stored crontabs, checking each
67command to see if it should be run in the current minute.
68Before running a command from a per-account crontab file,
69.Nm
70checks the status of the account with
71.Xr pam 3
72and skips the command if the account is unavailable,
73e.g., locked out or expired.
74Commands from
75.Pa /etc/crontab
76bypass this check.
77When executing
78commands, any output is mailed to the owner of the crontab (or to the user
79named in the
80.Ev MAILTO
81environment variable in the crontab, if such exists).
82The from address of this mail may be set with the
83.Ev MAILFROM
84environment variable.
85.Pp
86Additionally,
87.Nm
88checks each minute to see if its spool directory's modification time (or
89the modification time on
90.Pa /etc/crontab )
91has changed, and if it has,
92.Nm
93will then examine the modification time on all crontabs and reload those
94which have changed.
95Thus
96.Nm
97need not be restarted whenever a crontab file is modified.
98Note that the
99.Xr crontab 1
100command updates the modification time of the spool directory whenever it
101changes a crontab.
102.Pp
103Available options:
104.Bl -tag -width indent
105.It Fl j Ar jitter
106Enable time jitter.
107Prior to executing commands,
108.Nm
109will sleep a random number of seconds in the range from 0 to
110.Ar jitter .
111This will not affect superuser jobs (see
112.Fl J ) .
113A value for
114.Ar jitter
115must be between 0 and 60 inclusive.
116Default is 0, which effectively disables time jitter.
117.Pp
118This option can help to smooth down system load spikes during
119moments when a lot of jobs are likely to start at once, e.g.,
120at the beginning of the first minute of each hour.
121.It Fl J Ar rootjitter
122Enable time jitter for superuser jobs.
123The same as
124.Fl j
125except that it will affect jobs run by the superuser only.
126.It Fl m Ar mailto
127Overrides the default recipient for
128.Nm
129mail.
130Each
131.Xr crontab 5
132without
133.Ev MAILTO
134explicitly set will send mail to the
135.Ar mailto
136mailbox.
137Sending mail will be disabled by default if
138.Ar mailto
139set to a null string, usually specified in a shell as
140.Li ''
141or
142.Li \*q\*q .
143.It Fl n
144Do not daemonize; run in foreground instead.
145.It Fl s
146Enable special handling of situations when the GMT offset of the local
147timezone changes, such as the switches between the standard time and
148daylight saving time.
149.Pp
150The jobs run during the GMT offset changes time as
151intuitively expected.
152If a job falls into a time interval that disappears
153(for example, during the switch from
154standard time) to daylight saving time or is
155duplicated (for example, during the reverse switch), then it is handled
156in one of two ways:
157.Pp
158The first case is for the jobs that run every at hour of a time interval
159overlapping with the disappearing or duplicated interval.
160In other words, if the job had run within one hour before the GMT offset change
161(and cron was not restarted nor the
162.Xr crontab 5
163changed after that)
164or would run after the change at the next hour.
165They work as always, skip the skipped time or run in the added
166time as usual.
167.Pp
168The second case is for the jobs that run less frequently.
169They are executed exactly once, they are not skipped nor
170executed twice (unless cron is restarted or the user's
171.Xr crontab 5
172is changed during such a time interval).
173If an interval disappears
174due to the GMT offset change, such jobs are
175executed at the same absolute point of time as they would be in the
176old time zone.
177For example, if exactly one hour disappears, this
178point would be during the next hour at the first minute that is
179specified for them in
180.Xr crontab 5 .
181.It Fl o
182Disable the special handling of situations when the GMT offset of the local
183timezone changes, to be compatible with the old (default) behavior.
184If both options
185.Fl o
186and
187.Fl s
188are specified, the option specified last wins.
189.It Fl x Ar debugflag Ns Op , Ns Ar ...
190Enable writing of debugging information to standard output.
191One or more of the following comma separated
192.Ar debugflag
193identifiers must be specified:
194.Pp
195.Bl -tag -width ".Cm proc" -compact
196.It Cm bit
197currently not used
198.It Cm ext
199make the other debug flags more verbose
200.It Cm load
201be verbose when loading crontab files
202.It Cm misc
203be verbose about miscellaneous one-off events
204.It Cm pars
205be verbose about parsing individual crontab lines
206.It Cm proc
207be verbose about the state of the process, including all of its offspring
208.It Cm sch
209be verbose when iterating through the scheduling algorithms
210.It Cm test
211trace through the execution, but do not perform any actions
212.El
213.El
214.Sh FILES
215.Bl -tag -width /usr/local/etc/cron.d -compact
216.It Pa /etc/crontab
217System crontab file
218.It Pa /etc/cron.d
219Directory for optional/modularized system crontab files.
220.It Pa /etc/pam.d/cron
221.Xr pam.conf 5
222configuration file for
223.Nm
224.It Pa /usr/local/etc/cron.d
225Directory for third-party package provided crontab files.
226.It Pa /var/cron/tabs
227Directory for personal crontab files
228.El
229.Sh SEE ALSO
230.Xr crontab 1 ,
231.Xr pam 3 ,
232.Xr crontab 5 ,
233.Xr pam.conf 5
234.Sh AUTHORS
235.An Paul Vixie Aq Mt paul@vix.com
236