cron linux devops cheat-sheet scheduling automation

Cron Syntax Cheat Sheet: Complete Reference and Schedule Visualizer

A comprehensive guide to cron expression syntax, including special characters, common examples, and a visualizer explanation. Master crontab scheduling for Linux and Unix.

2026-04-20 Use This Tool

Cron Syntax Cheat Sheet: Complete Reference

Cron is a time-based job scheduler in Unix-like operating systems. Whether you're a developer setting up a background task or a DevOps engineer managing server maintenance, understanding Cron Expression Syntax is essential.

This guide provides a complete breakdown of cron fields, special characters, and practical examples to help you schedule tasks with confidence.


1. Cron Expression Format

A standard cron expression consists of five fields (or six in some systems like Quartz or Jenkins).

┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of the month (1 - 31)
│ │ │ ┌───────────── month (1 - 12)
│ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday)
│ │ │ │ │
* * * * *

2. Special Characters Reference

Character Description Example
* Any value: Matches every possible value for that field. * * * * * (Every minute)
, Value list separator: Specifies a list of values. 0,15,30,45 (Every 15 minutes)
- Range of values: Specifies a range from X to Y. 9-17 (From 9 AM to 5 PM)
/ Step values: Specifies increments. */15 (Every 15 minutes)
L Last: Specifies the last day of month or week. 5L (Last Friday of the month)
W Weekday: Specifies the nearest weekday (Mon-Fri) to a date. 15W (Nearest weekday to the 15th)
# Nth day of month: Specifies the Nth day of the week. 6#3 (Third Saturday of the month)

3. Common Cron Examples

Schedule Expression Description
Every Minute * * * * * Runs the task every minute.
Every Hour 0 * * * * Runs at the start of every hour.
Every Day at Midnight 0 0 * * * Runs once a day at 00:00.
Every Sunday at 4 AM 0 4 * * 0 Great for weekly backups.
Every 15 Minutes */15 * * * * Runs at :00, :15, :30, and :45.
Business Hours (9-5) 0 9-17 * * 1-5 Runs hourly on weekdays.

4. crontab -e vs crontab -l

The crontab command is used to manage your personal cron jobs.

  • crontab -e: Opens your personal crontab file for editing. If it's your first time, you might be asked to choose an editor (like nano or vim).
  • crontab -l: Lists all the active cron jobs for the current user.
  • crontab -r: Removes all your current cron jobs. Use with caution!

5. Visualizing Your Schedule

Reading a raw cron expression can be difficult. That's why we built the Cron Schedule Visualizer.

Our tool helps you:

  1. Parse Expressions: Instant translation of 0 4 * * 0 into "At 04:00 on Sunday."
  2. Next Run Times: See the next 5 scheduled executions based on your timezone.
  3. Human-Readable Descriptions: No more guessing what */5 9-17 * * 1-5 means.

FAQ: Troubleshooting Cron Jobs

Q: Why isn't my cron job running?

A: The most common reason is environment variables. Cron runs with a minimal shell environment. Always use absolute paths for commands (e.g., /usr/bin/python3 instead of python3) and log your output to a file: * * * * * /path/to/script.sh >> /var/log/cron.log 2>&1.

Q: What is the systemd timer alternative?

A: Modern Linux distributions (like Ubuntu, Fedora) recommend systemd timers over cron. They offer better logging via journalctl, dependencies, and more flexible scheduling, though the configuration is more complex.

Q: How do I handle timezone issues in cron?

A: By default, cron runs in the system's local timezone (usually UTC on servers). Some systems allow you to set CRON_TZ=America/New_York at the top of the crontab file, but the most reliable way is to synchronize your server clock to the desired timezone.


Related on Tool3M