OK, ho impiegato un po 'di tempo e ho capito come farlo su Ubuntu Natty, ed ecco come l'ho fatto funzionare. Potrebbe esserci un modo più elegante, ma funziona in questo modo.
Innanzitutto, dobbiamo avvolgere l'eseguibile cron in una shell che imposta la variabile TZ. Ecco come:
cd /usr/sbin
mv cron cron.real
Quindi, crea un nuovo file / usr / sbin / cron. Ho usato vim, ma è possibile utilizzare qualsiasi editor desiderato, basta fare in modo che il file sia simile al seguente:
#!/bin/bash
export TZ=UTC
/usr/sbin/cron.real
Rendi eseguibile il nuovo file cron:
chmod ugo+rx cron
Ora riavvia il demone cron:
service cron restart
I tuoi lavori cron verranno ora eseguiti su una pianificazione basata su UTC - TUTTAVIA, anche se il tempo in cui vengono eseguiti sarà UTC, quando eseguiranno avranno il fuso orario impostato su qualsiasi cosa sia definita per il sistema. Per cambiarlo, inseriscilo nel tuo crontab prima di qualsiasi comando:
TZ=UTC
Quindi il tuo crontab sarà simile a questo:
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
TZ=UTC
00 19 * * * date > /tmp/date.log
sudo service cron restart
modifica dopo?