# `CONSFIGURATOR.PROPERTY.CRON`

## API reference

### General

#### Property: `CRON:SYSTEM-JOB`

`(cron:system-job desc when user shell-command)`

Installs a cronjob running SHELL-COMMAND as USER to `/etc/cron.*`. DESC must be unique, as it will be used as a filename for a script. WHEN is either :DAILY, WEEKLY, :MONTHLY or a string formatted according to crontab(5), e.g. `0 3 * * *`.

The output of the cronjob will be mailed only if the job exits nonzero.

#### Property: `CRON:NICE-SYSTEM-JOB`

`(cron:nice-system-job desc when user shell-command)`

Like CRON:SYSTEM-JOB, but run the command niced and ioniced.

#### Property: `CRON:RUNS-CONSFIGURATOR`

`(cron:runs-consfigurator when)`

Re-execute the most recent deployment that included an application of this property, or of IMAGE-DUMPED with no arguments, using CRON:NICE-SYSTEM-JOB.

This can be useful to ensure that your system remains in a consistent state between manual deployments, and to ensure the timely application of properties modified by the PERIODIC:AT-MOST combinator.

For hosts to which this property is applied, mixing usage of DEPLOY and DEPLOY-THESE (or HOSTDEPLOY and HOSTDEPLOY-THESE, etc.) can lead to some inconsistent situations. For example, suppose you

    (hostdeploy foo.example.org (additional-property))

and then later

    (hostdeploy-these foo.example.org (unapplied (additional-property)).

As neither CRON:RUNS-CONFIGURATOR nor IMAGE-DUMPED with no arguments was applied since ADDITIONAL-PROPERTY was unapplied, the executable invoked by the CRON:RUNS-CONFIGURATOR cronjob will try to apply ADDITIONAL-PROPERTY again. One straightforward way to reduce the incidence of this sort of problem would be to refrain from using the ADDITIONAL-PROPERTIES argument to DEPLOY, HOSTDEPLOY etc.

You may wish to apply this property within ESEQPROPS-UNTIL; see the docstring of IMAGE-DUMPED.

#### Property: `CRON:USER-CRONTAB-INSTALLED`

`(cron:user-crontab-installed env &rest jobs)`

Set the contents of the current user’s crontab. ENV is like the ENV argument to RUN/MRUN, except that the environment variables will be set at the top of the generated crontab. Each of JOBS is a line for the body of the crontab. In both ENV and JOBS, the string “$HOME” is replaced with the remote home directory.