Saturday 8 October 2011

Learn 10 good UNIX usage habits

UNIX tips: Learn 10 good UNIX usage habits

Another excellent article from IBM Developer Works!

Creación de archivo parche localtime o ¿Qué hacer cuando al gobierno se le ocurre cambiar el cambio de hora?

Al revisar la configuración estándar de los archivos de hora local (en adelante /etc/localtime) se puede ver que a las 00:00 del 09 de septiembre se adelantará una hora, cambio que ya no es válido según las modificaciones de la autoridad oficial (en rojo):
[root@CentOS ~]# zdump -v /etc/localtime |grep 2011
/etc/localtime  Sun Mar 13 02:59:59 2011 UTC = Sat Mar 12 23:59:59 2011 CLST isdst=1 gmtoff=-10800
/etc/localtime  Sun Mar 13 03:00:00 2011 UTC = Sat Mar 12 23:00:00 2011 CLT isdst=0 gmtoff=-14400
/etc/localtime  Sun Oct  9 03:59:59 2011 UTC = Sat Oct  8 23:59:59 2011 CLT isdst=0 gmtoff=-14400
/etc/localtime  Sun Oct  9 04:00:00 2011 UTC = Sun Oct  9 01:00:00 2011 CLST isdst=1 gmtoff=-10800
Para evitar este cambio, es necesario crear un archivo /etc/localtime que no contenga el evento. Esto se debe hacer mediante el siguiente procedimiento:
Respaldo del archivo /etc/localtime actualmente en uso:
[root@CentOS etc]# cp /etc/localtime /etc/localtime.20111006.ffg.bak
Se debe observar que en algunos sistemas, /etc/localtime es un link simbólico hacia otra ruta en el disco. En estos casos, se debe respaldar el archivo destino del link.
Descargar una definición modificable del archivo tzdata desde http://www.iana.org/time-zones (data)
Una vez descargado el archivo, descomprimir y desempaquetar:
[root@CentOS ntp]# tar -zxvf tzdata2011k.tar.gz
Editamos el archivo southamerica:
[root@CentOS ntp]# vi southamerica
Dentro del archivo, buscamos en las reglas para Chile los eventos relativos a la fecha en cuestión:
# Rule  NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
Rule    Chile   2011    only    -       Aug     Sun>=16 4:00u   1:00    S
Rule    Chile   2012    max     -       Oct     Sun>=9  4:00u   1:00    S
Rule    Chile   2011    only    -       May     Sun>=2  3:00u   0       -
Rule    Chile   2012    max     -       Mar     Sun>=9  3:00u   0       -

Según el archivo sobre el que estamos trabajando, aparentemente el cambio de hora del 09 de octubre de 2011 ya no está considerado, por lo que procedemos a compilar el archivo usando zic:
[root@CentOS ntp]# zic southamerica
[root@CentOS ntp]# zic backward
El archivo southamerica contiene las reglas para crear el localtime, y el archivo backward la información relativa a los cambios de nombre de zona horaria en Linux/Unix.
Comprobamos que la compilación contenga solamente los eventos registrados para el año 2011:
[root@CentOS ntp]# zdump -v /usr/share/zoneinfo/Chile/Continental |grep 2011
/usr/share/zoneinfo/Chile/Continental  Sun May  8 02:59:59 2011 UTC = Sat May  7 23:59:59 2011 CLST isdst=1 gmtoff=-10800
/usr/share/zoneinfo/Chile/Continental  Sun May  8 03:00:00 2011 UTC = Sat May  7 23:00:00 2011 CLT isdst=0 gmtoff=-14400
/usr/share/zoneinfo/Chile/Continental  Sun Aug 21 03:59:59 2011 UTC = Sat Aug 20 23:59:59 2011 CLT isdst=0 gmtoff=-14400
/usr/share/zoneinfo/Chile/Continental  Sun Aug 21 04:00:00 2011 UTC = Sun Aug 21 01:00:00 2011 CLST isdst=1 gmtoff=-10800
Podemos ver que ya no existe ningún evento para lo que resta de 2011. Además revisamos los eventos para 2012:
[root@CentOS ntp]# zdump -v /usr/share/zoneinfo/Chile/Continental |grep 2012
/usr/share/zoneinfo/Chile/Continental  Sun Mar 11 02:59:59 2012 UTC = Sat Mar 10 23:59:59 2012 CLST isdst=1 gmtoff=-10800
/usr/share/zoneinfo/Chile/Continental  Sun Mar 11 03:00:00 2012 UTC = Sat Mar 10 23:00:00 2012 CLT isdst=0 gmtoff=-14400
/usr/share/zoneinfo/Chile/Continental  Sun Oct 14 03:59:59 2012 UTC = Sat Oct 13 23:59:59 2012 CLT isdst=0 gmtoff=-14400
/usr/share/zoneinfo/Chile/Continental  Sun Oct 14 04:00:00 2012 UTC = Sun Oct 14 01:00:00 2012 CLST isdst=1 gmtoff=-10800
Así, en este nuevo archivo localtime no aparece el evento del 09/10/2011 y se establece el siguiente evento para el 10 de marzo de 2012.