Contributed by Tom Rhodes.
One of the most useful utilities in FreeBSD is cron. This utility runs in the background and regularly checks
/etc/crontab for tasks to execute and searches
/var/cron/tabs for custom crontab files. These files are used to schedule tasks which cron runs at the specified times. Each entry in a crontab defines a task to run and is known as a cron job.
Two different types of configuration files are used: the system crontab, which should not be modified, and user crontabs, which can be created and edited as needed. The format used by these files is documented in crontab(5)
. The format of the system crontab,
column which does not exist in user crontabs. In the system crontab, cron
runs the command as the user specified in this column. In a user crontab, all commands run as the user who created the crontab.
User crontabs allow individual users to schedule their own tasks. The
root user can also have a user
crontab which can be used to schedule tasks that do not exist in the system
Here is a sample entry from the system crontab,
# /etc/crontab - root's crontab for FreeBSD
# $FreeBSD: head/en_US.ISO8859-1/books/handbook/config/chapter.xml 45038 2014-06-09 03:58:34Z wblock $
#minute hour mday month wday who command
*/5 * * * * root /usr/libexec/atrun
Lines that begin with the
# character are comments. A comment can be placed in the file as a reminder of what and why a desired action is performed. Comments cannot be on the same line as a command or else they will be interpreted as part of the command; they must be on a new line. Blank lines are ignored.
The equals (
=) character is used to define any environment settings. In this example, it is used to define the
PATH. If the
SHELL is omitted, cron will use the default Bourne shell. If the
PATH is omitted, the full path must be given to the command or script to run.
This line defines the seven fields used in a system crontab:
minute field is the time in minutes when the specified command will be run, the
hour is the hour when the specified command will be run, the
mday is the day of the month,
month is the month, and
wday is the day of the week. These fields must be numeric values, representing the twenty-four hour clock, or a
*, representing all values for that field. The
who field only exists in the system crontab and specifies which user the command should be run as. The last field is the command to be executed.
This entry defines the values for this cron job. The
*/5, followed by several more
* characters, specifies that
/usr/libexec/atrun is invoked by
root every five minutes of every hour, of every day and day of the week, of every month.
Commands can include any number of switches. However, commands which extend to multiple lines need to be broken with the backslash “\” continuation character.