CodeGym /Cursos /Docker SELF /Gestión de zonas horarias y tiempo: comandos timedatectl

Gestión de zonas horarias y tiempo: comandos timedatectl

Docker SELF
Nivel 3 , Lección 2
Disponible

Gestión de zonas horarias y tiempo: comandos timedatectl

1. Trabajo con el tiempo en Linux

¿Por qué es importante configurar correctamente el tiempo?

Imagínate que intentas rastrear un error en el registro del sistema, pero el tiempo en los logs no coincide con el real. O, aún peor, tu servidor en una empresa internacional muestra horas diferentes para diferentes usuarios. Configurar el tiempo correctamente no es solo comodidad: es críticamente importante para el funcionamiento de los sistemas, sincronización de archivos, mantenimiento de la seguridad (los certificados SSL dependen del tiempo) y coordinación de tareas laborales.

En Linux, el tiempo puede presentarse en dos formas:

  1. Tiempo del sistema (System Time): es el tiempo que utiliza el sistema operativo para sus tareas.
  2. Tiempo del hardware (Hardware Time): se almacena a nivel del hardware (BIOS/UEFI).

Trabajaremos con el tiempo del sistema usando la herramienta timedatectl.


2. Fundamentos del comando timedatectl

timedatectl es una utilidad de línea de comandos que proporciona una interfaz cómoda para gestionar el tiempo. Permite:

  • Verificar la configuración actual del tiempo y la zona horaria;
  • Configurar la hora del sistema y del hardware;
  • Ajustar las zonas horarias;
  • Activar y desactivar la sincronización del tiempo con NTP (Network Time Protocol).

Verificación de la hora actual

Vamos a empezar con lo más básico. Para conocer la hora y configuración actual, ejecuta el comando:

timedatectl

Ejemplo del resultado:

Local time: Tue 2023-10-31 12:34:56 MSK
Universal time: Tue 2023-10-31 09:34:56 UTC
RTC time: Tue 2023-10-31 09:34:56
Time zone: Europe/Moscow (MSK, +0300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

Explicación de los campos:

  • Local time: Hora local (del sistema).
  • Universal time: Hora en formato UTC (tiempo universal coordinado).
  • RTC time: Hora del hardware (BIOS/UEFI).
  • Time zone: Zona horaria actual.
  • System clock synchronized: Si el reloj del sistema está sincronizado mediante NTP.
  • NTP service: Si el servicio de sincronización está activo.
  • RTC in local TZ: Si el tiempo del hardware corresponde a la zona horaria local.

Configuración y cambio de zona horaria

A veces, tras un cambio de ubicación o debido a los requerimientos de un proyecto, puede ser necesario cambiar la zona horaria. Por ejemplo, tu servidor estaba configurado para Nueva York, pero ahora atiende a usuarios en Moscú. Las zonas horarias están disponibles en el directorio /usr/share/zoneinfo.

Para ver las zonas horarias disponibles, ejecuta:

timedatectl list-timezones

El resultado será una gran lista como esta:

Africa/Abidjan
America/New_York
Asia/Tokyo
Europe/Moscow

Para establecer una nueva zona horaria usa el comando:

sudo timedatectl set-timezone Europe/Moscow

Verifica que la zona horaria ha cambiado:

timedatectl

Ejercicio práctico

  1. Encuentra la zona horaria actual de tu servidor.
  2. Cambia la zona horaria a UTC.
  3. Vuelve a cambiar la zona horaria a la local.

3. Configuración manual del tiempo

Aunque los servidores modernos suelen sincronizar el tiempo mediante NTP, a veces es necesario configurarlo manualmente. Esto es útil si el servidor está en una red aislada sin acceso a internet.

Primero, puedes verificar la hora del sistema actual:

date

Puedes establecer una nueva hora utilizando el comando:

sudo timedatectl set-time "YYYY-MM-DD HH:MM:SS"

Por ejemplo, para establecer la hora al 1 de noviembre de 2023, 12:00:

sudo timedatectl set-time "2023-11-01 12:00:00"

Ahora verifica nuevamente el resultado:

timedatectl

Configuración del tiempo de hardware

El tiempo de hardware (también conocido como RTC — Real-Time Clock) se gestiona a nivel de BIOS/UEFI. Si el tiempo de hardware no está sincronizado con el sistema, esto puede causar problemas al reiniciar. Para sincronizarlo, ejecuta:

sudo hwclock --systohc

Este comando establecerá el tiempo de hardware de acuerdo con el tiempo del sistema.

Si necesitas hacer lo contrario (sincronizar el tiempo del sistema con el de hardware), utiliza:

sudo hwclock --hctosys

4. Sincronización de tiempo con NTP

La sincronización de tiempo con NTP es una forma de mantener automáticamente el tiempo actual utilizando servidores remotos. En la mayoría de las distribuciones modernas de Linux, NTP está habilitado por defecto.

Comprobación de la configuración de NTP

Ejecuta:

timedatectl status

Si NTP está deshabilitado (la línea NTP service mostrará inactive), actívalo:

sudo timedatectl set-ntp true

Para deshabilitar NTP, ejecuta:

sudo timedatectl set-ntp false

Si NTP no funciona, asegúrate de que los servicios relacionados estén activos. Por ejemplo, en sistemas con systemd-timesyncd, asegúrate de que el servicio esté activo:

sudo systemctl status systemd-timesyncd

5. Ejercicio práctico

Tarea

  1. Establece la zona horaria de tu sistema en UTC.
  2. Configura manualmente la hora del sistema a las 12:00:00, 1 de noviembre de 2023.
  3. Habilita la sincronización del tiempo a través de NTP.

Verificación

Después de completar la tarea, asegúrate de que:

  • La hora de tu sistema coincide con los parámetros establecidos.
  • La zona horaria se cambió a UTC.
  • El servicio NTP está activo.

6. Errores comunes y trampas

  1. "RTC in local TZ: no" no corresponde a la zona horaria local. Muchos sistemas prefieren usar UTC para el tiempo de hardware, para evitar confusiones al trabajar en diferentes zonas horarias. Esto no es un error, sino más bien una preferencia.

  2. Error de acceso al cambiar el tiempo. El comando timedatectl requiere privilegios de superusuario. Asegúrate de usar sudo.

  3. La sincronización NTP no se activa. Verifica si el servicio de NTP está funcionando en tu servidor. Por ejemplo, para systemd-timesyncd ejecuta:

    sudo systemctl start systemd-timesyncd
    

¿Por qué es útil en la práctica?

  1. Administración de servidores. Configurar el tiempo y las zonas horarias es importante para el funcionamiento correcto de los logs, la sincronización de datos y la planificación de tareas.
  2. Trabajo con proyectos internacionales. Usar UTC como estándar ayuda a evitar confusiones al trabajar con clientes de diferentes zonas horarias.
  3. Entrevistas y certificación. Preguntas sobre timedatectl y la gestión del tiempo son comunes en exámenes y entrevistas para roles de administrador de sistemas.

Ahora estás listo para gestionar el tiempo en Linux como gestionas tus deadlines: con confianza, precisión y sin sorpresas innecesarias.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION