Cron Expression: @reboot
@reboot
Run once when the system starts up
Field Breakdown
| Value | Field | Meaning |
|---|---|---|
| @reboot | special | runs 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
- Start background services
- Mount drives
- Restore iptables rules
- Start tunnels or VPN connections
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.