* About Hourly Schedules
Hourly cron schedules occupy a unique position in the spectrum of job scheduling: they're frequent enough to keep data fresh and systems responsive, but infrequent enough to run without significant operational overhead. Whether you're refreshing a cache, synchronising data from an external API, or running metrics aggregation, interval-based scheduling is one of the most common patterns in production systems.
Understanding Hourly Cron Syntax
0 * * * *— At minute 0 of every hour. Fires 24 times per day at the top of each hour.30 * * * *— At minute 30 of every hour. Useful for offsetting from top-of-hour traffic.0 */2 * * *— Every 2 hours. Fires at 00:00, 02:00, 04:00, etc.0 */3 * * *— Every 3 hours. 8 times per day.0 */4 * * *— Every 4 hours. 6 times per day.0 */6 * * *— Every 6 hours. Fires at midnight, 6 AM, noon, and 6 PM.0 9-17 * * 1-5— Every hour from 9 AM to 5 PM, Monday through Friday.
Common Use Cases for Hourly Schedules
Cache Invalidation and Data Refresh
A cache refresh job at 0 * * * * ensures stale data is never more than 60 minutes old. For less volatile data, 0 */4 * * * or 0 */6 * * * reduces load while maintaining acceptable freshness.
External API Synchronisation
SaaS platforms routinely sync data from external sources. API rate limits often constrain frequency, making a scheduled poll at 0 */2 * * * for moderately volatile data the appropriate pattern.
Metrics Aggregation and Reporting
Running aggregation jobs at 5 * * * * (5 minutes past the hour) rather than 0 * * * * gives the previous hour's data a brief window to fully settle before aggregation begins.
Best Practices for Hourly Scheduled Jobs
- Offset from the top of the hour. Use
15 * * * *or30 * * * *to avoid thundering herd at each hour boundary. - Verify step semantics.
0 */3 * * *fires at 00:00, 03:00, 06:00—always starting from hour 0. - Set execution time budgets. An hourly job should complete well within its interval.
- Implement idempotency for retries. If an hourly job fails and is retried, it should produce the same outcome.
- Consider drift. "Every hour" means at defined clock positions, not 60 minutes after the last run completed.
Related tools and guides
Sketch the cadence in the schedule builder, tweak fields in the field editor, and verify DST impact via the timezone guide. CI fleets that pile up on :00 should read Jenkins H syntax. When minutes are enough, see minute intervals.