Chapter 20. System Initialization

20.1. Cron Jobs

In addition to the individual user crontab files specified by ISO POSIX (2003) stored under /var/spool/cron, the process that executes scheduled commands shall also process the following additional crontab files: /etc/crontab, /etc/cron.d/*. The installation of a package shall not modify the configuration file /etc/crontab.

If a package wishes to install a job that has to be executed periodically, it shall place an executable cron script in one of the following directories:

/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

As these directory names suggest, the files within them are executed on a hourly, daily, weekly, or monthly basis, respectively, under the control of an entry in one of the system crontab files, at an unspecified time of day. See below for the rules concerning the names of cron scripts.

Note: It is recommended that cron scripts installed in any of these directories be script files rather than compiled binaries so that they may be modified by the local system administrator. Conforming applications may only install cron scripts which use an interpreter required by this specification or provided by this or another conforming application.

This specification does not define the concept of a package upgrade. Implementations may do different things when packages are upgraded, including not replacing a cron script if it marked as a configuration file, particularly if the cron script appears to have been modified since installation. In some circumstances, the cron script may not be removed when the package is uninstalled. Applications should design their installation procedure and cron scripts to be robust in the face of such behavior. In particular, cron scripts should not fail obscurely if run in unexpected circumstances. Testing for the existence of application binaries before executing them is suggested.

Future versions of this specification may remove the need to install file directly into these directories, and instead abstract the interface to the cron utility in such a way as to hide the implementation. Please see Future Directions.

If a certain task has to be executed at other than the predefined frequencies, the package shall install a file /etc/cron.d/cron-name. The file shall have the same format as that described for the crontab command in ISO POSIX (2003), except that there shall be an additional field, username, before the name of the command to execute. For completeness, the seven fields shall be:

  1. Minute [0,59]

  2. Hour [0,23]

  3. Day of the month [1,31]

  4. Month of the year [1,12]

  5. Day of the week [0,6] (with 0=Sunday)

  6. Username

  7. command [args ...]

This file shall be processed by the system automatically, with the named command being run at the specified time, as the specified username.

Applications installing files in these directories shall use the LSB naming conventions (see File Naming Conventions).