Schedule Tasks Every Hour on the Hour | CronBase

cron expression Standard
$ 0 */1 * * *

At the start of every hour, every day of the year.

The `0 */1 * * *` cron expression executes a task exactly at the beginning of every hour, at minute zero. It is widely used for routine maintenance, synchronized data ingestion, log rotation, and transactional health checks that require frequent, consistent intervals without overwhelming system resources.

Minute
0
Hour
*/1
Day of Month
*
Month
*
Day of Week
*
How it works

Next 5 Runs

  • in 36m 46s
  • in 1h 36m
  • in 2h 36m
  • in 3h 36m
  • in 4h 36m

* Tools

Code & Implementations

Bash
#!/usr/bin/env bash
set -euo pipefail
LOCKFILE="/var/lock/hourly_sync_job.lock"
exec 9>"$LOCKFILE"
if ! flock -n 9; then
  echo "Error: Another instance of the hourly job is already running." >&2
  exit 1
fi
echo "Starting hourly maintenance task..."
/usr/local/bin/perform-sync.sh
echo "Hourly task completed successfully."
Setup notes

Save this script to /usr/local/bin/hourly-task.sh, make it executable with chmod +x, and add '0 */1 * * * /usr/local/bin/hourly-task.sh' to your crontab using crontab -e.

Last verified:

Partner UptimeRobot

Keep this cron job monitored 24/7

UptimeRobot alerts you the moment a scheduled job stops responding. Free plan monitors up to 50 endpoints — no credit card required.

Platform Equivalents

AWS EventBridge

Standard cron expressions often need conversion for AWS EventBridge schedules.

EventBridge Rule
cron(0 */1 * * ? *)

Systemd Timer

OnCalendar*-*-* 00/1:00:00

my-task.timer
[Unit]
Description=Timer for cron expression: 0 */1 * * *

[Timer]
OnCalendar=*-*-* 00/1:00:00
Persistent=true

[Install]
WantedBy=timers.target

Last verified:

Frequently Asked Questions

What is the difference between `0 */1 * * *` and `0 * * * *`?

There is no functional difference; both expressions execute at minute zero of every hour. The `*/1` syntax explicitly denotes a step interval of one hour, while the bare asterisk implicitly means every hour. Most modern cron daemons optimize both to the exact same execution pattern.

How can I prevent multiple hourly executions from overlapping if a task runs long?

You should implement a locking mechanism. In Bash, use the `flock` utility to wrap your script. In application code, use distributed lock managers like Redis (Redlock) or database-backed locks to ensure only one instance of the hourly task runs at any given time.

How do Daylight Saving Time (DST) changes affect this hourly cron schedule?

During the autumn transition (clocks move back), the hour of the shift repeats, potentially executing your job twice. In spring (clocks move forward), an hour is skipped, meaning your job may skip a run. To avoid this, configure your cron daemon or system timezone to use Coordinated Universal Time (UTC).

Can I stagger this job to avoid the thundering herd problem on my database?

Yes, running tasks exactly at minute zero can overload shared services if many systems do the same. You can stagger the execution by changing the minute field to a specific offset, such as `15 */1 * * *` to run at fifteen minutes past every hour instead of on the hour.

How should I monitor that my hourly cron job actually executed successfully?

Since hourly jobs run frequently, passive monitoring is highly effective. Implement a heartbeat monitor (e.g., sending a curl request to an external monitoring service at the end of the script). If the service doesn't receive a ping within 65 minutes, it triggers an alert.

* Explore

Related expressions you might need

Last verified:

Was this helpful?