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)