[LUG.ro] Cron no se lleva con horario de verano.
Mario Oroz
jmoroz en uol.com.ar
Vie Ene 25 14:10:52 ARDT 2008
Sebastian Dominguez escribió:
> 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 ;)
Bueno, por lo que decis, la hora de la bios; del reloj x hard esta en localtime.
Por lo que me decis; convendria pasarla a UTC, en el ejemplo que te pase la
deberia poner a las 11:12:38, es decir 2 horas mas de mi tiempo local.
Asi cuando pido un hwclock; hwclock --show; hwclock --localtime me da el
localtime (UTC -2hs) u cuando le pida el hwclock --utc me va a dar correcto; las
11 y pico; no es así?
Pero bueno ... el problema del cron esta solucionado con lo que comente en el
1er mail, hoy se ejecutaron los script a la hora indicada.
Esto me sirve para (tratar) comprender un poco mas el tema de la hora.
A proposito mensionas una manera de hacer este ajuste con herramietas de la
distro; tengo Debian 3.1, que debo usar aparte de lo que use en el primer mail?
Gracias SebaD.
Más información sobre la lista de distribución Lugro