crontool
Paste a schedule, read it in English, see the next runs.

Run a Cron Job Every Day at 4 AM

To run a job every day at 4 AM, use 0 4 * * *. It fires once a day at 04:00 server time — minute 0, hour 4, every day of the month, every month, every day of the week.

The crontab line

Run crontab -e and add:

0 4 * * * /usr/bin/bash /path/to/job.sh >> /path/to/job.log 2>&1

This runs once a day at 04:00. The five fields are minute, hour, day-of-month, month, day-of-week.

Field breakdown

0 4 * * *: minute 0, hour 4 (24-hour clock), the three * mean every day, every month, every weekday.

Change the minute or time

To fire at 4 AM thirty, set the minute field: 30 4 * * *. For a different hour, change the hour field (0–23).

Timezone

Cron uses the server's local time. Check it with timedatectl. If your box runs UTC, 04:00 is UTC — set CRON_TZ=Europe/London at the top of the crontab (modern cron) or set the hour in UTC.

FAQ

What is the cron expression for every day at 4 AM?

0 4 * * * runs once a day at 04:00 server time. The first field is the minute, the second is the hour (24-hour).

How do I run a job at 4 AM on weekdays only?

Add 1-5 in the day-of-week field: 0 4 * * 1-5 runs Monday to Friday at 04:00.

Why does my daily job run at the wrong time?

Cron uses the server timezone, not yours. Check with timedatectl and either convert the hour to the server's zone or set CRON_TZ at the top of the crontab.