Crontab line for "once a year"
0 0 1 1 * /usr/local/bin/your-script.sh >> /var/log/your-script.log 2>&1
Runs at midnight on 1 January. Equivalent to @yearly and @annually.
In Laravel's scheduler you rarely need raw cron β but if you do: $schedule->command('report:send')->cron('0 0 1 1 *');
Cron syntax cheat sheet
ββββββββββββββ minute (0β59)
β ββββββββββββ hour (0β23)
β β ββββββββββ day of month (1β31)
β β β ββββββββ month (1β12 or JANβDEC)
β β β β ββββββ day of week (0β7 or SUNβSAT, 0 and 7 = Sunday)
β β β β β
* * * * * command
| Symbol | Meaning | Example |
|---|---|---|
* | any value | * * * * * every minute |
, | list | 0 9,17 * * * at 09:00 and 17:00 |
- | range | 0 9 * * 1-5 weekdays at 09:00 |
/ | step | */15 * * * * every 15 minutes |
Gotchas
- Day-of-month OR day-of-week: if both fields are restricted, cron runs when either matches.
0 0 13 * 5runs on every 13th and every Friday. - Timezone: cron uses the server's timezone (check with
timedatectl). Kubernetes CronJobs supportspec.timeZone. - Environment: cron runs with a minimal
PATH. Use absolute paths and redirect output to a log. - Overlap: wrap long jobs with
flock -n /tmp/job.lockso runs don't pile up.
Common schedules
- Every minute
* * * * * - Every 2 minutes
*/2 * * * * - Every 5 minutes
*/5 * * * * - Every 10 minutes
*/10 * * * * - Every 15 minutes
*/15 * * * * - Every 30 minutes
*/30 * * * * - Every hour
0 * * * * - Every 2 hours
0 */2 * * * - Every 6 hours
0 */6 * * * - Every 12 hours
0 */12 * * * - Every day at midnight
0 0 * * * - Every day at 2 AM
0 2 * * * - Every weekday at 9 AM
0 9 * * 1-5 - Every Saturday and Sunday
0 0 * * 6,0 - Every Monday
0 0 * * 1 - Every Sunday
0 0 * * 0 - First day of every month
0 0 1 * * - Every quarter
0 0 1 1,4,7,10 * - Once a year
0 0 1 1 * - Every 15 minutes during business hours
*/15 9-17 * * 1-5