2016-10-28 00:36:26 +00:00
---
2020-02-06 23:45:31 +00:00
layout: docs
page_title: periodic Stanza - Job Specification
sidebar_title: periodic
2016-10-28 00:36:26 +00:00
description: |-
The "periodic" stanza allows a job to run at fixed times, dates, or intervals.
The easiest way to think about the periodic scheduler is "Nomad cron" or
"distributed cron".
---
# `periodic` Stanza
2020-02-06 23:45:31 +00:00
<Placement groups={['job', 'periodic']} />
2016-10-28 00:36:26 +00:00
The `periodic` stanza allows a job to run at fixed times, dates, or intervals.
The easiest way to think about the periodic scheduler is "Nomad cron" or
"distributed cron".
```hcl
job "docs" {
periodic {
cron = "*/15 * * * * *"
prohibit_overlap = true
}
}
```
2017-03-15 18:29:36 +00:00
The periodic expression by default evaluates in the **UTC timezone** to ensure
2016-10-28 00:36:26 +00:00
consistent evaluation when Nomad spans multiple time zones.
2017-01-26 03:14:58 +00:00
## `periodic` Requirements
2020-02-06 23:45:31 +00:00
- The job's [scheduler type][batch-type] must be `batch`.
- A job can not be updated to be periodically. Thus, to transition an existing job to be periodic, you must first run `nomad stop -purge «job name»`. This is expected behavior and is to ensure that this change has been intentionally made by an operator.
2017-01-26 03:14:58 +00:00
2016-10-28 00:36:26 +00:00
## `periodic` Parameters
2016-11-01 12:53:13 +00:00
- `cron` `(string: <required>)` - Specifies a cron expression configuring the
2016-10-28 00:36:26 +00:00
interval to launch the job. In addition to [cron-specific formats][cron], this
option also includes predefined expressions such as `@daily` or `@weekly`.
- `prohibit_overlap` `(bool: false)` - Specifies if this job should wait until
previous instances of this job have completed. This only applies to this job;
it does not prevent other periodic jobs from running at the same time.
2017-02-15 22:37:06 +00:00
- `time_zone` `(string: "UTC")` - Specifies the time zone to evaluate the next
2020-05-13 20:16:23 +00:00
launch interval against. [Daylight Saving Time][dst] affects scheduling, so
please ensure the [behavior below][dst] meets your needs. The time zone must
be parsable by Golang's
2017-02-15 22:37:06 +00:00
[LoadLocation](https://golang.org/pkg/time/#LoadLocation).
2016-10-28 00:36:26 +00:00
## `periodic` Examples
The following examples only show the `periodic` stanzas. Remember that the
2016-10-31 00:41:03 +00:00
`periodic` stanza is only valid in the placements listed above.
2016-10-28 00:36:26 +00:00
### Run Daily
This example shows running a periodic job daily:
```hcl
periodic {
cron = "@daily"
}
```
2017-03-15 18:29:36 +00:00
### Set Time Zone
This example shows setting a time zone for the periodic job to evaluate in:
```hcl
periodic {
cron = "*/15 * * * * *"
time_zone = "America/New_York"
}
```
2020-05-13 20:16:23 +00:00
## Daylight Saving Time
2020-05-13 12:21:19 +00:00
2020-05-13 20:16:23 +00:00
Though Nomad supports configuring `time_zone`, we strongly recommend that periodic
jobs are specified with respect to UTC `time_zone`. Only customize `time_zone`
when the following daylight saving time behavior is *desired:*
2020-05-13 12:21:19 +00:00
2020-05-13 20:16:23 +00:00
- When leaping forward, periodic jobs scheduled for the skipped hour (eg 2:30am
in `America/New_York`) will be *skipped* for that day (eg March 10th).
- When falling back, periodic jobs scheduled for the duplicated hour (eg 1:30am
in `America/New_York`) will be *run twice* for that day (eg November 3rd).
2020-05-13 12:21:19 +00:00
2020-02-06 23:45:31 +00:00
[batch-type]: /docs/job-specification/job#type 'Batch scheduler type'
2020-06-15 13:48:32 +00:00
[cron]: https://github.com/hashicorp/cronexpr#implementation 'List of cron expressions'
2020-05-13 20:16:23 +00:00
[dst]: #daylight-saving-time