18

Is there a way of setting up a cronjob for a specific timezone?

My shared hosting is in USA (Virginia) and I am in UK. If I set a cron job to be executed at 1600 hrs every friday, then it will execute when its 1600 in Virginia.

I was wondering if I can setup my cronjob in such a way that it understands which timezone to pick. I am not too worried about daylight saving difference.

I have asked my shared hosting providers about it and they said I should be able to set the timezone in some cron ini files, but I could not find any.

nasaa
  • 2,701
  • 8
  • 47
  • 76
  • probably better for http://unix.stackexchange.com or http://superuser.stackexchange.com – jsj Nov 08 '12 at 14:57

5 Answers5

18

I think that you should check

/etc/default/cron

or just type

Crontab cronfile

and you should find

TZ=UTC

This should be changed (for example America/New_York). Second way is set in cron example

5 2 3 * * TZ="America/New_York" /do/command > /dev/null 2>&1
Bartosz Kowalczyk
  • 1,479
  • 2
  • 18
  • 34
  • Thanks Bartosz. 1. There is no default folder in etc folder. And there is no cron folder either 2. When I set TZ="America/New_york" or "Europe/London" I get curl: (6) Couldn't resolve host 'TZ=America' error. – nasaa Nov 08 '12 at 13:58
  • 30
    Note that the `TZ` specifications in the crontab doesn't affect when the job is executed. It just specifies which timezone should be used by the process once launched by cron. – Aman Dec 15 '13 at 01:06
15

You can use the CRON_TZ environment variable, excerpt from man 5 crontab on a CentOS 6 server:

The CRON_TZ specifies the time zone specific for the cron table. User type into the chosen table times in the time of the specified time zone. The time into log is taken from local time zone, where is the daemon running.

So if you add this at the top of your cron entry:

CRON_TZ=Europe/London

You should be good.

AlexT
  • 1,145
  • 10
  • 11
  • 9
    You should always use `man 5 crontab` and search for `TZ` first since usage of `CRON_TZ` varies a lot across different distros. Ubuntu 14.04 LTS does not support `CRON_TZ` neither. – John Wu Mar 27 '16 at 05:33
  • 2
    Execute `crontab -e` and add `CRON_TZ=Europe/London` at the top of the file. – Chacko Nov 08 '16 at 10:40
6

If you want to set different timezone for your particular cronjob, execute crontab -evia ssh and add

TZ=Europe/Moscow

before every cronjob.

Full article here

Tural Ali
  • 22,202
  • 18
  • 80
  • 129
2

To expand on AlexT's answer:

CRON_TZ="Europe/London"

is the answer.

p.s. If anyone is here looking for timezone fixes for GoDaddy, I recommend putting...

export TZ="Europe/London"

...in your .bashrc so that your console runs in your timezone.

Brad Larson
  • 170,088
  • 45
  • 397
  • 571
admin0389
  • 51
  • 5
2

On Ubuntu 18.08

host@machine$crontab -e

then enter

TZ=Asia/Kolkata 

Note:- Replace Asia/Kolkata with your desire timezone

kuldipem
  • 1,719
  • 1
  • 19
  • 32