Вопрос

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.

Это было полезно?

Решение

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

Другие советы

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.

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

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.

On Ubuntu 18.08

host@machine$crontab -e

then enter

TZ=Asia/Kolkata 

Note:- Replace Asia/Kolkata with your desire timezone

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top