Field-by-Field Breakdown of `*/30 * * * *`
| Position | Field Name | Allowed Values | Value in `*/30 * * * *` | Evaluation Meaning |
|---|---|---|---|---|
| 1 | Minute | 0 – 59 | */30 | */30 (At minutes 0 and 30) |
| 2 | Hour | 0 – 23 | * | * (Every hour: 0-23) |
| 3 | Day of Month | 1 – 31 | * | * (Every day of the month: 1-31) |
| 4 | Month | 1 – 12 | * | * (Every month: 1-12) |
| 5 | Day of Week | 0 – 6 (Sun-Sat) | * | * (Every day of the week: 0-6) |
The Half-Hour Production Balance
A 30-minute interval provides the optimal cadence for batch operations that are too heavyweight for high-frequency runs (such as scraping catalogs or warming CDNs), but need faster turnaround than an hourly schedule.
Both */30 * * * * and 0,30 * * * * are functionally identical in all POSIX systems. The step notation */30 divides the 60-minute hour into two 30-minute intervals: 0 and 30.
Because 30 minutes provides a generous 1,800-second window, scripts have ample time to retry transient network timeouts and handle moderate data spikes without risking overlapping executions.
Common Production Scenarios for `*/30 * * * *`
Search Catalog Delta Sync & Price Indexing
Scans changed product prices and stock levels, updating Meilisearch or Algolia indices every 30 minutes.
/usr/bin/php /var/www/artisan index:delta-productsStripe Dispute & Chargeback Warning Check
Queries Stripe Radar Early Fraud Warnings (EFW) to auto-refund high-risk transactions before formal disputes file.
/usr/bin/python3 /opt/billing/check_early_fraud.pyCloud Snapshot Volume Health Check
Verifies that EBS/Ceph block storage volume snapshots are completing successfully and alerts on volume degradation.
/usr/local/bin/verify_storage_snapshots.shProduction Gotchas When Running `*/30 * * * *`
- Minute :00 Contention: Running at */30 means your job runs at minute :00 alongside system hourly tasks. If performance dips, offset to 15,45 * * * *.
- Timezone Traps: Cron runs on system time unless overridden with TZ at the crontab top level.
- Stale Data Caches: Ensure downstream consumers invalidate local cache tags at least every 30 minutes to match generation frequency.
Frequently Asked Questions About `*/30 * * * *`
Is */30 * * * * the same as 0,30 * * * *?
Yes, both syntaxes execute at minute 0 and minute 30 of every hour, producing identical schedules.
How do I run every 30 minutes at minutes 15 and 45?
Use explicit comma notation: 15,45 * * * * /path/to/script.sh. This avoids peak top-of-hour contention.
How many times does */30 * * * * run per day?
Exactly 48 times per day (2 runs per hour across 24 hours).