COHERENT manpages
This page displays the COHERENT manpage for cron [Execute commands periodically].
List of available manpages
Index
cron -- System Administration
Execute commands periodically
/etc/cron&
cron is a daemon that executes commands at preset times.
Once each minute cron searches for commands to execute. cron first looks
for file /usr/lib/crontab. If it exists, then cron reads it for commands to
execute. If /usr/lib/crontab does not exist, however, cron searches
/usr/spool/cron/crontabs for command files. Each user can have her own
command file in that directory. See the Lexicon entry for crontab for
information how to write and load a command file.
For each entry in each command file, cron compares the current time with
the scheduled execution time and executes the command if the times match.
When it finishes the search, cron sleeps until the next minute. Because it
never exits, cron should be executed only once (customarily by /etc/rc).
cron is designed for commands that must be executed regularly. Temporal
commands that need to be executed only once should be handled with the
command at.
Permissions
cron performs some interesting manipulations with permissions. This is
necessary to allow cron to run a wide variety of programs untended without
creating loopholes in the system's security. Occasionally, this can create
difficulties for users who do not grasp what cron does or why. The
following describes how cron manipulates permissions on the programs you
ask it to run.
To begin, when cron executes a user's crontab file, it changes the
effective user ID to the ID of that user whose crontab file is being
executed, cd's to the user's HOME directory. When, however, cron runs an
entry from a /usr/lib/crontab, it uses the user ID and group ID of user
daemon. This prevents security holes involving entries in a crontable file.
For example, the following crontab entry contains redirection:
* * * * * echo hello world >/dev/console 2>&1
If cron finds this entry in /usr/lib/crontab, it tries to execute the
command as user daemon. The command will not execute it if user daemon
lacks permission to write to /dev/console. Note that using /usr/lib/crontab
is not recommended.
If however, it finds the entry in user henry's crontab file, it tries to
execute the command under the effective user ID of henry. The command will
fail if henry lacks permission to write to /dev/console, and will succeed
if he does.
When the shell executes a command in the background, it reads its standard
input from /dev/null (unless redirected) and writes its standard output to
the controlling tty. If cron is invoked with /etc/cron& from /etc/rc,
there is no controlling tty, so the standard output goes to /dev/null.
Thus,
* * * * * echo hello world
typically writes hello world to /dev/null.
When a user logs in, /bin/login grabs the tty and runs chown and chmod on
it. It is owned by the user with default permissions 700. If the user who
has logged in on the console types the command
chmod /dev/console a+w
to allow all users to write to it, then the crontab entry
* * * * * echo hello world >/dev/console 2>/tmp/cron.err
will indeed echo to the console every minute.
cron should be executed only once, at boot time. It uses
/usr/lib/cron/FIFO as a lock file to prevent the execution more than one
cron daemon.
If mail options are enabled, which is the default, cron sends mail to the
owner of a crontab about all commands in that file that failed.
To allow cron to remove lock file /usr/lib/cron, do not send signal KILL to
cron. Instead, use signal TERM. cron ignores signals INT, HUP, and PIPE.
cron uses the signal ALRM internally.
Files and Directories
/usr/lib/cron/FIFO
Lock file (named pipe). Created by cron; removed by cron/rc.
/usr/lib/cron/cron.allow
List of allowed users. Permissions: 600 root root.
/usr/lib/cron/cron.deny
List of denied users. Permissions: 600 root root.
/usr/lib/crontab
Global crontab file, used by previous COHERENT cron mechanism.
/usr/spool/cron
Spool directory parent. Permissions: 700 root root.
/usr/spool/cron/crontabs
Main cron directory. It holds each user's command file. Permissions:
700 root root.
See Also
Administering COHERENT,
commands,
crontab
Notes
cron does not presently write into the log file. The size of the hostname
+ domain must not exceed 1,000 characters.
cron looks for /usr/lib/crontab to remain compatible with the COHERENT 286
version of cron. If, however, you continue to keep all cron commands in
file /usr/lib/crontab, it will not be possible to run setuid cron tasks for
logins that have a password. It is strongly recommended that you do not
use /usr/lib/crontab, and instead create individual crontab files.









