Cron Expression: @reboot

@reboot Run once when the system starts up

Field Breakdown

ValueFieldMeaning
@rebootspecialruns once at system startup — no other fields

@reboot runs the command once when the cron daemon starts, which is typically at system boot. Unlike regular cron jobs, it has no fields — just @reboot command.

The startup timing problem

@reboot jobs run early in the boot process. Network may not be up, databases may not be ready, mounted drives may not be accessible yet. Add a sleep to let services settle:

# Wait 30 seconds for services to start:
@reboot sleep 30 && /usr/local/bin/start-app.sh

# Wait for PostgreSQL specifically:
@reboot sleep 10 && until pg_isready -h localhost; do sleep 2; done && /usr/local/bin/start-app.sh

systemd is usually better for boot services

For services that need to start on boot with proper dependency handling, systemd service units are more reliable than @reboot cron. @reboot is fine for simple one-off scripts.

Related Expressions

@reboot
At system startup
@reboot sleep 30 && cmd
At startup with 30s delay
@hourly
= 0 * * * *
@daily
= 0 0 * * *
@weekly
= 0 0 * * 0
@monthly
= 0 0 1 * *

Common Use Cases

Paste your crontab to visualise every job on a 24-hour timeline — detect overlaps, collisions, and get flock-safe versions.

Open Cron Visualiser →

Frequently Asked Questions

Does @reboot run on every boot or just once ever?
Every boot. @reboot runs each time the cron daemon starts, which happens on every system startup. It is not a one-time job.
What user does @reboot run as?
@reboot in a user's crontab (crontab -e) runs as that user. @reboot in /etc/crontab or /etc/cron.d/ runs as the user specified in the username field.