[LUG.ro] Cron no se lleva con horario de verano.

Sebastian Dominguez sebaminguez en gmail.com
Vie Ene 25 10:28:28 ARDT 2008


2008/1/25, Mario Oroz <
> Sebastian Dominguez escribió:
> > Es el mismo suuario el que ejecuta el cron o es root u otro?
> > Verificá que no exista la variable TZ en ese ambiente.
>
> El usuario que ejecuta el cron es root
> No tengo la variable TZ definida.
>
> > Verifica tambien que efectivamente la zona horaria esté correcta
> > comparando la salida de date y date -u. Ademas seria recomendable que tu
> > reloj de hardware este seteado en hora 0 UTC. Podes verificarlo con
> > hwclock que deberia entregarte lo mismo qeu date -u (dos horas de
> > diferencia)
> El timezone esta en:
> serv:~# cat /etc/timezone
> America/Argentina/Buenos_Aires
>
> La zona horaria estaria correcta, ya que tengo -2hs de diferencia entre
> "date -u" y "date".
>
> Me la complicaste con el reloj hardware! ya que como decis arriba debe ser
> igual "hwclock" y "date -u"; pero como ves ... no lo son!
>
> Por lo que veo mi reloj hardware no esta en UTC!? Lo cambio desde la bios?
No, no cambies la hora desde la bios. usa el comando
correspondiente(si hace flata) que seria hwclock -w <Hora> y --utc o
--localtime segun corresponda. Para esto es mejor usar la herramienta
de tu distro, que contempla generar los cambios para la sicronizacion
de reloges al iicio del sistema (si te gustan las cosas a mano lo
seguimos en el proximo mail)
>
> Mas aun me desconcierta la salida de "hwclock --utc" :P

Hwcloc SIEMPRE te devuelve la hora local. Lo que cambias con --utc  o
--localtime es en que horario crees que esta seteado el reloj. A ver
si soy mas claro, cuando vos tecleas:

hwclock --show --utc

le estas diciendo mostrame la hora para mi zona horaria (--show)
considerando que mi reloj de hardware esta seteado en hora UTC
(--utc).

> serv:~# date
> Fri Jan 25 09:12:35 ARST 2008
La hora local del sistema, perfecto

> serv:~# date -u
> Fri Jan 25 11:12:38 UTC 2008
La hora UTC del sistema, dos horas de diferencia, perfecto

> serv:~# hwclock
> Fri 25 Jan 2008 09:13:03 AM ARST  -0.164720 seconds
Este no lo tengamos en cuenta ya que utiliza localtime o utc
dependiendo cual fue el ultimo utilizado

> serv:~# hwclock --show
> Fri 25 Jan 2008 09:13:09 AM ARST  -0.468179 seconds
Misma situacion que la anterior.

> serv:~# hwclock --localtime
> Fri 25 Jan 2008 09:13:26 AM ARST  -0.774176 seconds
Aqui le estas diciendo devolveme la hora considerando qeu el reloj de
hard esta en hora local. La hora es correcta, por lo que el reloj de
hard esta seteado en hora local

> serv:~# hwclock --utc
> Fri 25 Jan 2008 07:13:34 AM ARST  -0.684612 seconds
Las dos horas de retraso son porque le indicas que el reloj esta en
UTC y debe sumarle la zona horaria (-2hs) para obtener la hora local
(que te recuerdo es la que siempre muestra hwclock).
> serv:~#
>
En definitiva, con todo esto que te escribí te mande pura fruta,
jejeje. No porque este mal, sino porque por ahi no vienen el problema.
La solucion la encontre en el man de cron:

Daylight Saving Time and other time changes
       Local time changes of less than three hours, such as those
caused by the start or end of Daylight Saving Time, are
       handled specially.  This only applies to jobs that run at a
specific time and jobs that are run with a granularity
       greater than one hour.  Jobs that run more frequently are
scheduled normally.

Esto lo hace porque al adelantar la hora puede que una tarea no se
ejecute. Por ejemplo si tenias una tarea el 31/12 a las 00.30, nunca
se ejecutaria porque por el cambio automatico de las 00hs se paso a
1hs. Similar para cuando la hora vuelve, se te ejecutaria dos veces.

Eso si, no encontré (todavia como solucionarlo). Te va a tocar a vos ;)

> > Un abrazo.

-- 
Sebastian Dominguez
Msn: sebastian[en]hotmail.com.ar
jabber/gtalk: sebaminguez[en]gmail.com

|| Hicimos un pacto con Dios: El no hace sistemas y nosotros no
hacemos milagros. ||



Más información sobre la lista de distribución Lugro