crontab(C) 19 June 1992 crontab(C) Name crontab - schedule commands to be executed at regular intervals Syntax crontab [ file ] crontab -r crontab -l crontab -u user -r crontab -u user -l Description The crontab command can be used to schedule commands to be executed at regular intervals. These commands are stored in the user's crontab file, /usr/spool/cron/crontabs/username. Any output or errors generated by the commands are mailed to the user. If called with no options, crontab copies the specified file, or standard input if no file is specified, into the crontabs directory (if the user has a previous crontab file, it is replaced). crontab with the -r option removes the user's crontab file from the cron- tabs directory. crontab with the -l option lists the contents of the user's crontab file. The -u option allows crontab to maniplulate a different crontab file from invoking users. If crontab is used from an su session then crontab by default will manipulate the su'ed users crontab file. The -u option may be used to direct crontab to manipulate the original login user's crontab file instead. The super user (root) can also use the -u option to mani- pulate any users crontab file. If the file /usr/lib/cron/cron.allow exists, only the users listed in that file are allowed to use crontab. If cron.allow does not exist, and the file /usr/lib/cron/cron.deny does, then all users not listed in cron.deny are allowed access to crontab, with an empty cron.deny allowing global usage. If neither file exists, only the super user is allowed to submit a job. The allow/deny files consist of one user name per line. The crontabs files consist of lines of six fields each. The fields are separated by spaces or tabs. The first five are integer patterns that specify the minute (0-59), hour (0-23), day of the month (1-31), month of the year (1-12), and day of the week (0-6, with 0=Sunday). Each of these patterns may contain: + A number in the (respective) range indicated above + Two numbers separated by a minus (indicating an inclusive range) + A list of numbers separated by commas (meaning all of these numbers) + An asterisk (meaning all legal values) Note that the specification of days may be made by two fields (day of the month and day of the week). If both are specified as a list of elements, both are adhered to. For example, 0 0 1,15 * 1 would run a command on the first and fifteenth of each month, as well as on every Monday. 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). The sixth field is a string that is executed by the shell at the speci- fied time(S). A ``%'' in this field is translated into a newline charac- ter. Only the first line (up to a ``%'' or end-of-line) of the command field is executed by the shell. The other lines are made available to the command as standard input. The shell is invoked from your $HOME directory with an arg0 of sh. Users who desire to have their .profile executed must explicitly do so in the crontab file. cron supplies a default environment for every shell, defining HOME, LOGNAME, SHELL (=/bin/sh), and PATH(=/bin:/usr/bin:). Examples An example crontabs file follows: 0 4 * * * calendar - 15 4 * * * find /usr/preserve -mtime +7 -exec rm -f {} ; 30 4 1 * 1 /usr/lib/uucp/uuclean 40 4 * * * find / -name '#*' -atime +3 -exec rm -f {} ; 1,21,41 * * * * (echo -n ' '; date; echo ) >/dev/console The lines in this example do the following: run the calendar program every night at 4:00 am, clear old files from the /etc/preserve directory every night at 4:15 am, clean up the uucp spool directory every Monday and the first of every month at 4:30 am, find and remove any old files with names beginning with ``#'' every night at 4:40 am, and echo the current date and time to the console three times an hour at one minute, 21 minutes, and 41 minutes past the hour. Files /usr/lib/cron main cron directory /usr/spool/cron/crontabs crontab directory /usr/lib/cron/cron.allow list of allowed users /usr/lib/cron/cron.deny list of denied users /usr/lib/cron/.proto cron environment information /usr/lib/cron/queuedefs cron data file See also at(C), cron(C), sh(C) Diagnostics crontab exits and returns a value of 55 if it cannot allocate enough mem- ory. If it exits for any other reason, it returns a value of 1. If the user (of -u user ) does not exist, crontab returns a value of 1 and an error message. Notes crontab commands are executed by cron(C). cron reads the files in the crontabs directory only on startup or when a new crontab is submitted with the crontab command, so changes made to these files by hand will not take effect until the system is rebooted. Changes submitted with the crontab command will take effect as soon as cron is free to read them (that is, when cron is not in the process of running a scheduled job or reading another newly submitted at(C) or crontab job). Users who do not wish to have output from their commands mailed to them may want to redirect it to a file: 0 * * * * who >> /tmp/whofile 2> /dev/null The example above would append the output of the who(C) command to a file, and throw away any errors generated. For more details on output redirection, see the sh(C) manual page. Users should remember to redirect the standard output and standard error of their commands, otherwise any generated output or errors will be mailed to the user. crontab will overwrite any previous crontab submitted by the same user. Standards conformance crontab is conformant with: AT&T SVID Issue 2; and X/Open Portability Guide, Issue 3, 1989.