Cambiar la zona horaria en un sistema Linux de forma sencilla y efectiva: guía paso a paso para administradores de sistemas.

Cambiar la zona horaria en Linux: guía rápida para administradores.


La gestión de la zona horaria en sistemas Linux es una tarea esencial para garantizar que la hora del sistema esté configurada correctamente, especialmente cuando se ejecutan aplicaciones críticas o se gestionan servidores que operan en diferentes zonas geográficas. Este artículo está dirigido a administradores de sistemas y ofrece una guía paso a paso sobre cómo cambiar la zona horaria de un sistema Linux utilizando la cuenta de usuario root. Proporcionaremos ejemplos prácticos que ilustran este proceso y explicaremos cómo verificar que los cambios se han realizado correctamente.

1. Iniciar sesión como root

El primer paso es iniciar sesión como root en el servidor o sistema Linux que deseas configurar. Puedes hacerlo mediante acceso físico o a través de un cliente SSH. El acceso root te garantiza los permisos necesarios para modificar la configuración de la zona horaria y realizar cambios en archivos del sistema.

sudo -i

2. Navegar al directorio de zonas horarias

El siguiente paso es navegar al directorio que contiene los archivos de configuración de zonas horarias. Estos archivos están organizados según la ubicación geográfica y se encuentran en el directorio /usr/share/zoneinfo/. A continuación, se muestra cómo navegar a este directorio y listar su contenido para ver todas las zonas horarias disponibles.

cd /usr/share/zoneinfo/
ls

Este comando te devolverá una lista de subdirectorios organizados por regiones y países. Algunos ejemplos de los directorios que verás son los siguientes:

Africa      Brazil   Egypt    GB         Hongkong     Jamaica            Mexico   Poland      ROC        US
America     Canada   Eire     GB-Eire    HST          Japan              MST      Portugal    ROK        UTC
Antarctica  CET      EST      GMT        Iceland      Kwajalein          MST7MDT  posix       Singapore  WET
Arctic      Chile    EST5EDT  GMT0       Indian       leap-seconds.list  Navajo   posixrules  SystemV    W-SU
Asia        CST6CDT  Etc      GMT-0      Iran         Libya              NZ       PRC         Turkey     zone.tab
Atlantic    Cuba     Europe   GMT+0      iso311.tab   localtime          NZ-CHAT  PST8PDT     UCT        Zulu
Australia   EET      Factory  Greenwich  Israel       MET                Pacific  right       Universal

3. Hacer una copia de seguridad del archivo de zona horaria actual

Antes de cambiar la zona horaria, es una buena práctica hacer una copia de seguridad del archivo de zona horaria actual. Este archivo se encuentra en /etc/localtime, que es un enlace simbólico al archivo de zona horaria en /usr/share/zoneinfo/. Para asegurarte de que puedes revertir el cambio si es necesario, realiza una copia de seguridad del archivo actual:

cp -p /etc/localtime /etc/localtime.old

El parámetro -p preserva los atributos originales del archivo, como los permisos y la fecha de modificación.

4. Cambiar la zona horaria

Para cambiar la zona horaria, debes crear un nuevo enlace simbólico que apunte al archivo correspondiente a la nueva zona horaria en el directorio /usr/share/zoneinfo/. Esto reemplazará el enlace simbólico actual que apunta al archivo de zona horaria antiguo.

Por ejemplo, si deseas cambiar la zona horaria a la zona central de EE. UU., el comando sería:

ln -sf /usr/share/zoneinfo/US/Central /etc/localtime

El parámetro -sf garantiza que el enlace simbólico existente se sobrescriba.

Si deseas configurar una zona horaria diferente, simplemente sustituye US/Central con la zona horaria adecuada, como America/New_York para la zona Este de EE. UU. o Europe/Madrid para la zona de España.

5. Ajustar la fecha y hora si es necesario

En algunos casos, después de cambiar la zona horaria, es posible que necesites ajustar manualmente la fecha y la hora del sistema. Esto es especialmente útil si el reloj del sistema no se sincroniza automáticamente con un servidor NTP (Network Time Protocol).

Para ajustar manualmente la fecha y la hora, utiliza el comando date en el siguiente formato:

date MMDDHHmm

Donde:

  • MM es el mes (dos dígitos).
  • DD es el día (dos dígitos).
  • HH es la hora en formato de 24 horas.
  • mm son los minutos.

Por ejemplo, para configurar la fecha y la hora al 8 de noviembre a las 15:06, el comando sería:

date 11081506

6. Ajustar el reloj de hardware

Después de haber cambiado la hora del sistema, debes asegurarte de que el reloj de hardware (HW clock) se sincronice con la nueva hora del sistema. Esto es importante porque el reloj de hardware es el que mantiene la hora cuando el sistema está apagado.

El siguiente comando sincroniza el reloj de hardware con el reloj del sistema:

/sbin/hwclock --systohc

7. Verificar la nueva zona horaria

Una vez que hayas realizado los cambios, puedes verificar que la nueva zona horaria se ha aplicado correctamente utilizando el comando timedatectl. Este comando muestra la información detallada sobre la configuración de la hora y la zona horaria del sistema.

timedatectl

El resultado del comando debe mostrar la zona horaria actual y otra información relevante, como la hora local, la hora UTC, y si la sincronización NTP está habilitada o no. Un ejemplo del resultado sería el siguiente:

      Local time: Wed 2023-11-08 15:06:40 CST
  Universal time: Wed 2023-11-08 21:06:40 UTC
        RTC time: Wed 2023-11-08 21:06:40
       Time zone: America/Chicago (CST, -0600)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: no
 Last DST change: DST ended at
                  Sun 2023-11-05 01:59:59 CDT
                  Sun 2023-11-05 01:00:00 CST
 Next DST change: DST begins (the clock jumps one hour forward) at
                  Sun 2024-03-10 01:59:59 CST
                  Sun 2024-03-10 03:00:00 CDT

8. Solución de problemas comunes

A continuación, algunos problemas comunes que pueden surgir durante el proceso y cómo solucionarlos:

8.1. El cambio de zona horaria no se refleja inmediatamente

Si después de ejecutar los comandos no ves el cambio reflejado en timedatectl, intenta reiniciar el servicio systemd-timedated con el siguiente comando:

systemctl restart systemd-timedated

Esto forzará al sistema a aplicar los cambios de inmediato.

8.2. El sistema no sincroniza la hora automáticamente

Si el sistema no está sincronizando automáticamente la hora, asegúrate de que el servicio NTP esté habilitado. Puedes habilitarlo con el siguiente comando:

timedatectl set-ntp true

Conclusión

Cambiar la zona horaria en un sistema Linux es una tarea sencilla que, sin embargo, puede tener un gran impacto en el rendimiento de las aplicaciones y la correcta gestión de los eventos del sistema. Siguiendo los pasos descritos en esta guía, puedes cambiar la zona horaria de tu sistema de manera eficiente, garantizar que el reloj de hardware esté sincronizado y verificar que los cambios se hayan aplicado correctamente.

Este proceso es especialmente útil para administradores de sistemas que gestionan servidores en múltiples ubicaciones geográficas, asegurando que las marcas de tiempo y los eventos del sistema estén siempre alineados con la zona horaria correcta.