Problema de fuso horário com o cron

10

Meus trabalhos cron são calculados uma hora depois, em comparação com o horário do servidor. Eu não entendo o que está acontecendo.

Minha configuração é a seguinte:

Horário do servidor:

Europe/Paris

Em / etc / default / cron, adicionei a seguinte linha:

TZ="Europe/Paris"

Apesar disso, o cron job é iniciado uma hora depois do horário do servidor. O que é realmente complicado, é que se eu pedir ao cron para tocar a instrução "date", isso dá a data do servidor (a boa!).

Não tenho ideia de como resolver esse problema; Eu tenho feito algumas leituras em fóruns, mas não achei nada interessante.

O que você acha?

    
por Guillaume Lebourgeois 05.01.2012 / 11:36

5 respostas

15

(Copiando o meu comentário como uma resposta, uma vez que acabou por ser a solução; eu achei certo.)

Portanto, os trabalhos agendados estão sendo agendados no UTC ( Europe/Paris está em um deslocamento de uma hora do UTC).

A página de manual do Vixie cron diz:

The daemon will use, if present, the definition from /etc/timezone for the timezone.

O que há em /etc/timezone ? Você modificou /etc/timezone mais recentemente do que o processo cron foi iniciado? Você já tentou

/etc/init.d/cron restart

?

    
por 05.01.2012 / 21:52
2

Algumas distros, como o Fedora, fornecem um mecanismo no qual você pode definir CRON_TZ= para sobrescrever seu fuso horário padrão.

Do 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.

Algo parecido com isto:

#m  h           d   m   wday    command
CRON_TZ="Europe/Paris"
5   0,6,12,18   *   *   *       /path/to/script.bash
    
por 19.08.2013 / 01:26
1

Wikipédia diz

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

Então, talvez seu ID de login tenha uma configuração de TZ diferente da configuração do sistema TZ?

    
por 05.01.2012 / 12:04
1

Reiniciar o cron era o que eu precisava, mas para mim o comando era

/etc/init.d/crond restart (crond not cron)
    
por 16.01.2015 / 01:50
0

Só percebi isso no Ubuntu 14/16. Trabalhou perfeitamente para mim.

Passos (sudo implícito):

  1. cat /etc/timezone
  2. rm -fv /etc/localtime
  3. ln -s /usr/share/zoneinfo/Asia/Kolkata /etc/localtime
  4. apt install -y --reinstall tzdata
  5. /etc/init.d/rsyslog restart
  6. tail -f /var/log/syslog
  7. cat /etc/timezone
por 14.02.2017 / 07:23