CRONTAB(1) User Commands CRONTAB(1)
NAME
crontab - user crontab file
SYNOPSIS
/usr/bin/crontab [
-u username] [
filename]
/usr/bin/crontab { -e | -l | -r } [
username]
/usr/bin/crontab -u username { -e | -g | -l | -r } /usr/xpg4/bin/crontab [
filename]
/usr/xpg4/bin/crontab { -e | -g | -l | -r } [
username]
/usr/xpg4/bin/crontab -u username { -e | -l | -r } /usr/xpg6/bin/crontab [
filename]
/usr/xpg6/bin/crontab { -e | -g | -l | -r } [
username]
/usr/xpg6/bin/crontab -u username { -e | -l | -r }DESCRIPTION
The
crontab utility manages a user's access with
cron (see
cron(8)) by
copying, creating, listing, and removing
crontab files. If invoked
without options,
crontab copies the specified file, or the standard input
if no file is specified, into a directory that holds all users' crontabs.
If
crontab is invoked with
filename, this overwrites an existing
crontab entry for the user that invokes it, or for the user specified with the
-u option.
Cron supports a merged crontab with entries coming from either the user's
/var/spool/cron/crontabs file or from the user's
/etc/cron.d/crontabs file. The entries in the user's
/var/spool/cron/crontabs file are
editable whereas those in
/etc/cron.d/crontabs are system-defined entries
which may not be customized by the user. The dual set of crontab entries
is only of interest to system-defined users such as
root. Except where
otherwise explicitly indicated, all variants of the
crontab command act
only on the editable crontab files found in
/var/spool/cron/crontabs.
crontab Access Control
Users: Access to
crontab is allowed:
o if the user's name appears in
/etc/cron.d/cron.allow.
o if
/etc/cron.d/cron.allow does not exist and the user's name
is not in
/etc/cron.d/cron.deny.
Users: Access to
crontab is denied:
o if
/etc/cron.d/cron.allow exists and the user's name is not in
it.
o if
/etc/cron.d/cron.allow does not exist and user's name is in
/etc/cron.d/cron.deny.
o if neither file exists, only a user with the
solaris.jobs.user authorization is allowed to submit a job.
o if Auditing is enabled, the user's shell is not audited and
the user is not the
crontab owner. This can occur if the user
logs in by way of a program, such as some versions of
SSH,
which does not set audit parameters.
The rules for
allow and
deny apply to
root only if the
allow/
deny files
exist.
The
allow/
deny files consist of one user name per line.
crontab Entry Format
A
crontab file consists of lines of six fields each. The fields are
separated by spaces or tabs. The first five are integer patterns that
specify the following:
minute (0-59),
hour (0-23),
day of the month (1-31),
month of the year (1-12),
day of the week (0-6 with 0=Sunday).
Each of these patterns can be either an asterisk (meaning all legal
values) or a list of elements separated by commas. An element is either a
number or two numbers separated by a hyphen (meaning an inclusive range).
A range or asterisk can optionally be followed by a step value as
/<number>. For example,
2-59/3 can be used in the minutes field to
specify every three minutes starting at 2 past the hour, or
*/2 in the
hours field means every two hours.
Time specified here is interpreted in the currently active timezone. At
the top of the crontab file this is the timezone which is set system-wide
in /etc/default/init. A user can add a line such as:
TZ=
timezone ...and all subsequent entries will be interpreted using that timezone,
until a new
TZ=timezone line is encountered. The specification of days
can be made by two fields (day of the month and day of the week). Both
are adhered to if specified as a list of elements. See
EXAMPLES.
The sixth field of a line in a
crontab file is a string that is executed
by the shell at the specified times. A percent character in this field
(unless escaped by
\) is translated to a
NEWLINE character.
Only the first line (up to a
`%' or end of line) of the command field is
executed by the shell. Other lines are made available to the command as
standard input. Any blank line or line beginning with a
`#' is a comment
and is ignored.
The shell is invoked from your $HOME directory. As with $TZ, both $SHELL
and $HOME can be set by having a line such as:
SHELL=/usr/bin/
someshell ...or:
HOME=
somedirectory ...which will take precedence for all the remaining entries in the
crontab or until there is another
HOME or
SHELL entry. It is invoked with
an
arg0 of the basename of the $SHELL that is currently in effect. A user
who wants to have his
.profile or equivalent file executed must
explicitly do so in the
crontab file.
cron supplies a default environment
for every shell, defining HOME, LOGNAME, SHELL, TZ, and PATH. The default
PATH for user
cron jobs is
/usr/bin; while root
cron jobs default to
/usr/sbin:/usr/bin. The default PATH can be set in
/etc/default/cron (see
cron(8)). The TZ, HOME, and SHELL environment variables are set to match
those that are in effect in the
crontab file at the time.
If you do not redirect the standard output and standard error of your
commands, any generated output or errors are mailed to you.
crontab Environment Variables
The following variables are supported:
HOME Allows the user to choose an alternative directory for cron to change
directory to prior to running the command. For example:
HOME=/var/tmp
SHELL The name of the shell to use to run subsequent commands. For example:
SHELL=/usr/bin/ksh
TZ Allows the user to choose the timezone in which the
cron entries are
run. This effects both the environment of the command that is run
and the timing of the entry. For example, to have your entries run
using the timezone for Iceland, use:
TZ=Iceland
RANDOM_DELAY Allows the user to specify an upper bound in minutes for which
execution may be delayed. The default is 0 which means no delay. A
value that is larger than the scheduled interval may result in the
command running less often. For example, to have the command run at
some random time within two minutes after the schedule use:
RANDOM_DELAY=2
Each of these variables affects all of the lines that follow it in the
crontab file, until it is reset by a subsequent line resetting that
variable. Hence, it is possible to have multiple timezones supported
within a single
crontab file.
The lines that are not setting these environment variables are the same
as crontab entries that conform to the UNIX standard and are described
elsewhere in this man page.
Setting cron Jobs Across Timezones
The default timezone of the
cron daemon sets the system-wide timezone for
cron entries. This, in turn, is by set by default system-wide using
/etc/default/init.
If some form of
daylight savings or
summer/winter time is in effect, then
jobs scheduled during the switchover period could be executed once,
twice, or not at all.
OPTIONS
The following options are supported:
-e Edits a copy of the current user's
crontab file, or creates an
empty file to edit if
crontab does not exist. When editing is
complete, the file is installed as the user's
crontab file.
The environment variable
EDITOR determines which editor is invoked
with the
-e option. All
crontab jobs should be submitted using
crontab. Do not add jobs by just editing the
crontab file, because
cron is not aware of changes made this way.
If all lines in the
crontab file are deleted, the old
crontab file
is restored. The correct way to delete all lines is to remove the
crontab file using the
-r option.
If
username is specified, the specified user's
crontab file is
edited, rather than the current user's
crontab file. This can only
be done by root or by a user with the
solaris.jobs.admin authorization.
Only the entries in the user's
/var/spool/cron/crontabs file are
editable.
-l Lists the
crontab file for the invoking user. Only root or a user
with the
solaris.jobs.admin authorization can specify a username
following the
-l option to list the
crontab file of the specified
user.
Entries from the user's
/var/spool/cron/crontabs file are listed,
unless the
-g option is given, in which case only entries from the
user's
/etc/cron.d/crontabs file are listed.
-g In conjunction with the
-l option, lists the global
crontab file
for the invoking or specified user (if authorized) instead of the
editable
crontab file. This option is not valid unless the
-l option is also given.
-r Removes a user's
crontab from the
crontab directory. Only root or a
user with the
solaris.jobs.admin authorization can specify a
username following the
-r option to remove the
crontab file of the
specified user.
-u username Specifies the name of the user whose
crontab is to be replaced,
viewed or modified. This can only be done by root or by a user with
the
solaris.jobs.admin authorization.
EXAMPLES
Example 1: Cleaning up Core Files
This example cleans up
core files every weekday morning at 3:15 am:
15 3 * * 1-5 find $HOME -namecore 2>/dev/null | xargs rm -f Example 2: Mailing a Birthday Greeting
This example mails a birthday greeting:
0 12 14 2 * mailx john%Happy Birthday!%Time for lunch. Example 3: Specifying Days of the Month and Week
This example runs a command on the first and fifteenth of each month, as
well as on every Monday:
0 0 1,15 * 1 To specify days by only one field, the other field should be set to *.
For example:
0 0 * * 1 would run a command only on Mondays.
Example 4: Using step values:
This example runs a job every hour during the night and every 3 hours
during working hours.
0 8-18/3,19-7 * * * and to run a job every 2 minutes, use:
*/2 * * * * Example 5: Using Environment Variables
The following entries take advantage of
crontab support for certain
environment variables.
TZ=GMT
HOME=/local/home/user
SHELL=/usr/bin/ksh
0 0 * * * echo $(date) > midnight.GMT
TZ=PST
0 0 * * * echo $(date) > midnight.PST
TZ=EST
HOME=/local/home/myuser
SHELL=/bin/csh
The preceding entries allow two jobs to run. The first one would run at
midnight in the GMT timezone and the second would run at midnight in the
PST timezone. Both would be run in the directory
/local/home/user using
the Korn shell. The file concludes with
TZ,
HOME, and
SHELL entries that
return those variable to their default values.
ENVIRONMENT VARIABLES
See
environ(7) for descriptions of the following environment variables
that affect the execution of
crontab:
LANG,
LC_ALL,
LC_CTYPE,
LC_MESSAGES, and
NLSPATH.
/usr/bin/crontab EDITOR Determine the editor to be invoked when the
-e option is
specified. This is overridden by the
VISUAL environmental
variable. The default editor is
vi(1).
PATH The
PATH in
crontab's environment specifies the search path
used to find the editor.
VISUAL Determine the visual editor to be invoked when the
-e option is
specified. If
VISUAL is not specified, then the environment
variable
EDITOR is used. If that is not set, the default is
vi(1).
/usr/xpg4/bin/crontab EDITOR Determine the editor to be invoked when the
-e option is
specified. The default editor is
/usr/xpg4/bin/vi.
/usr/xpg6/bin/crontab EDITOR Determine the editor to be invoked when the
-e option is
specified. The default editor is
/usr/xpg6/bin/vi.
EXIT STATUS
The following exit values are returned:
0 Successful completion.
>0 An error occurred.
FILES
/etc/cron.d main cron directory
/etc/cron.d/cron.allow list of allowed users
/etc/default/cron contains cron default settings
/etc/cron.d/cron.deny list of denied users
/etc/cron.d/crontabs system spool area for
crontab /var/cron/log accounting information
/var/spool/cron/crontabs spool area for
crontabATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
/usr/bin/crontab +--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Standard |
+--------------------+-----------------+
/usr/xpg4/bin/crontab +--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Standard |
+--------------------+-----------------+
/usr/xpg6/bin/crontab +--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Standard |
+--------------------+-----------------+
SEE ALSO
atq(1),
atrm(1),
auths(1),
ed(1),
sh(1),
vi(1),
auth_attr(5),
attributes(7),
environ(7),
standards(7),
cron(8),
su(8)NOTES
If you inadvertently enter the
crontab command with no arguments, do not
attempt to get out with Control-d. This removes all entries in your
crontab file. Instead, exit with Control-c.
When updating
cron, check first for existing
crontab entries that can be
scheduled close to the time of the update. Such entries can be lost if
the update process completes after the scheduled event. This can happen
because, when
cron is notified by
crontab to update the internal view of
a user's
crontab file, it first removes the user's existing internal
crontab and any internal scheduled events. Then it reads the new
crontab file and rebuilds the internal
crontab and events. This last step takes
time, especially with a large
crontab file, and can complete
after an
existing
crontab entry is scheduled to run if it is scheduled too close
to the update. To be safe, start a new job at least 60 seconds after the
current date and time.
If an authorized user other than root modifies another user's
crontab file, the resulting behavior can be unpredictable. Instead, the
authorized user should first use
su(8) to become superuser to the other
user's login before making any changes to the
crontab file.
Care should be taken when adding
TZ,
SHELL and
HOME variables to the
crontab file when the
crontab file could be shared with applications
that do not expect those variables to be changed from the default.
Resetting the values to their defaults at the bottom of the file will
minimize the risk of problems.
January 9, 2022
CRONTAB(1)