One of the most useful utilities in FreeBSD is cron(8). The
cron
utility runs in the background and constantly
checks the /etc/crontab
file. The cron
utility also checks the /var/cron/tabs
directory, in
search of new crontab
files. These
crontab
files store information about specific
functions which cron
is supposed to perform at
certain times.
The cron
utility uses two different
types of configuration files, the system crontab and user crontabs. The
only difference between these two formats is the sixth field. In the
system crontab, the sixth field is the name of a user for the command
to run as. This gives the system crontab the ability to run commands
as any user. In a user crontab, the sixth field is the command to run,
and all commands run as the user who created the crontab; this is an
important security feature.
User crontabs allow individual users to schedule tasks without the
need for root
privileges. Commands in a user's crontab run with the
permissions of the user who owns the crontab.
The root
user can have a user crontab just like
any other user. This one is different from
/etc/crontab
(the system crontab). Because of the
system crontab, there is usually no need to create a user crontab
for root
.
Let us take a look at the /etc/crontab
file
(the system crontab):
# /etc/crontab - root's crontab for FreeBSD # # $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $ ## SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log # # #minute hour mday month wday who command
# # */5 * * * * root /usr/libexec/atrun
![]()
Like most FreeBSD configuration files, the | |
First, the environment must be defined. The equals
( | |
This line defines a total of seven fields. Listed here are the
values | |
This last line will define the values discussed above. Notice here
we have a Commands can have any number of flags passed to them; however, commands which extend to multiple lines need to be broken with the backslash "\" continuation character. |
This is the basic set up for every
crontab
file, although there is one thing
different about this one. Field number six, where we specified
the username, only exists in the system
/etc/crontab
file. This field should be
omitted for individual user crontab
files.
You must not use the procedure described here to
edit/install the system crontab. Simply use your favorite
editor: the cron
utility will notice that the file
has changed and immediately begin using the updated version.
See
this FAQ entry for more information.
To install a freshly written user
crontab
, first use your favorite editor to create
a file in the proper format, and then use the
crontab
utility. The most common usage
is:
%
crontab crontab-file
In this example, crontab-file
is the filename
of a crontab
that was previously created.
There is also an option to list installed
crontab
files: just pass the
-l
option to crontab
and look
over the output.
For users who wish to begin their own crontab file from scratch,
without the use of a template, the crontab -e
option is available. This will invoke the selected editor
with an empty file. When the file is saved, it will be
automatically installed by the crontab
command.
If you later want to remove your user crontab
completely, use crontab
with the -r
option.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.