Run a Cron Job at Reboot (@reboot)
Put @reboot at the start of a crontab line to run the command once each time cron starts after boot: @reboot /path/job.sh. It runs when the cron daemon starts, not necessarily when every service is ready — add a sleep if your job needs the network.
The special string
@reboot is one of cron's named schedules. A line like @reboot /path/job.sh runs once when the cron daemon initializes after the machine boots. It replaces the five time fields entirely.
It runs at cron start, not full boot
@reboot fires when cron starts, which can be before the network, database, or other services are up. If your job depends on them, delay it: @reboot sleep 30 && /path/job.sh.
User vs system crontab
@reboot works in a user crontab (crontab -e). It does not run on systemctl restart cron — only on an actual boot where cron starts fresh.
When systemd is a better fit
For start-up jobs with real dependencies, a systemd service with After=network-online.target and WantedBy=multi-user.target is more reliable than @reboot.
FAQ
How do I run a cron job at startup?
Add a line beginning with @reboot, e.g. @reboot /path/job.sh. It runs once when the cron daemon starts after boot.
Why didn't my @reboot job run?
@reboot fires only on an actual boot (not on restarting the cron service), and only if your crontab was loaded. It may also run before the network is ready — add sleep or use a systemd service.
How do I delay an @reboot job until the network is up?
Prefix a sleep: @reboot sleep 30 && /path/job.sh, or better, use a systemd service with After=network-online.target.