Cron Every 2 Weeks

A true 14-day cycle cannot be written in standard cron, because the day-of-month field resets each month and months are not multiples of 14 days. Avoid */14 in day-of-month — it resets to the 1st each month (giving 1, 15, 29) rather than a continuous 14-day cadence. The common approximation is the 1st and 15th; for an exact 14-day cycle, gate a daily job with a date check.

Cron Expression
0 0 1,15 * *

Field Breakdown

FieldValueMeaning
Minute0At minute 0
Hour0At midnight (00:00)
Day of Month1,15Approximate biweekly — twice a month
Month*Every month (1-12)
Day of Week*Any day of the week

Variations

0 0 1,15 * *Approximate biweekly — the 1st and 15th of each month
0 0 * * 1 [ $(( $(date +\%s) / 86400 \% 14 )) -eq 0 ] && /path/to/jobExact every-14-days: a weekly job gated by a day-count check

Common Use Cases

  • Biweekly payroll or payouts
  • Every-other-week newsletters
  • Sprint-cadence reports (two-week sprints)

Tips & Best Practices

Do not use */14 in the day-of-month field — it does not produce a continuous 14-day interval.

The 1st-and-15th approximation is good enough for most biweekly needs.

For an exact cycle, gate a job by epoch-day modulo 14, or use systemd timers / an application scheduler.

Related Intervals