Timezone issue with cron
Solution 1:
(Copying my comment as an answer, since it turned out to be the solution; I guessed right.)
So cron jobs are being scheduled in UTC (Europe/Paris
is at a one hour offset from UTC).
The Vixie cron man page says:
The daemon will use, if present, the definition from /etc/timezone for the timezone.
What's in /etc/timezone
? Have you modified /etc/timezone
more recently than the cron process was started? Have you tried
/etc/init.d/cron restart
?
Solution 2:
Some distros such as Fedora provide a mechanism where you can set CRON_TZ=
to override your default timezone.
From the Fedora man 5 crontab
The CRON_TZ variable specifies the time zone specific for the cron table. The user should enter a time according to the specified time zone into the table. The time used for writing into a log file is taken from the local time zone, where the daemon is running.
Something like this:
#m h d m wday command
CRON_TZ="Europe/Paris"
5 0,6,12,18 * * * /path/to/script.bash
Solution 3:
Wikipedia says
Most cron implementations simply interpret crontab entries in the system time zone setting under which the cron daemon itself is run. This can be a source of dispute if a large multiuser machine has users in several time zones, especially if the system default timezone includes the potentially confusing DST. Thus, a cron implementation may special-case any "TZ=" environment variable setting lines in user crontabs, interpreting subsequent crontab entries relative to that timezone
So perhaps your login ID has a TZ setting that differs from the system TZ setting?
Solution 4:
Restarting cron was what I needed but for me the command was
/etc/init.d/crond restart (crond not cron)