El comando timedatectl en Linux le permite consultar y cambiar el reloj del sistema y su configuración. Viene como parte de systemd, un reemplazo del demonio sysvinit utilizado en los sistemas GNU/Linux y Unix.

En este artículo, discutiremos este comando y las características que proporciona usando ejemplos relevantes.

Ejemplos de Timedatectl

Nota – Todos los ejemplos descritos en este artículo están probados en GNU bash, versión 4.3.11(1).

Mostrar la información de fecha/hora del sistema

Simplemente ejecute el comando sin ninguna opción de línea de comandos o banderas, y le dará información sobre la fecha y la hora actuales del sistema, así como los ajustes relacionados con el tiempo. Por ejemplo, aquí está la salida cuando ejecuté el comando en mi sistema:

$ timedatectl Hora local: Sat 2014-11-08 05:46:40 IST Hora universal: Sat 2014-11-08 00:16:40 UTC Zona horaria: Asia/Kolkata (IST, +0530) NTP habilitado: síNTP sincronizado: sí RTC inlocal TZ: no DST activo: n/a

Así que puedes ver que la salida contiene información sobre LTC, UTC y zona horaria, así como la configuración relacionada con NTP, RTC y DST para el localhost.

Actualizar la fecha u hora del sistema mediante la opción set-time

Para ajustar el reloj del sistema a una fecha u hora determinada, utilice la opción set-time seguida de una cadena que contenga la nueva información de fecha/hora. Por ejemplo, para cambiar la hora del sistema a las 6:40 am, utilice el siguiente comando:

$ sudo timedatectl set-time «2014-11-08 06:40:00»

y aquí está la salida:

$ timedatectl Hora local: Sat 2014-11-08 06:40:02 IST Hora universal: Sat 2014-11-08 01:10:02 UTC Timezone: Asia/Kolkata (IST, +0530) NTP habilitado: síNTP sincronizado: no RTC inlocal TZ: no DST activo: n/a

Observe que el campo Hora local muestra ahora la hora actualizada. Del mismo modo, también puede actualizar la fecha del sistema.

Actualizar la zona horaria del sistema con la opción set-timezone

Para ajustar la zona horaria del sistema al valor especificado, puede utilizar la opción set-timezone seguida del valor de la zona horaria. Para ayudarle con la tarea, el comando timedatectl también proporciona otra opción útil. list-timezones le proporciona una lista de zonas horarias disponibles para elegir.

Por ejemplo, aquí está la lista desplazable de zonas horarias que el comando timedatectl produjo en mi sistema:

timedatectl-timezones

Para cambiar la zona horaria actual del sistema de Asia/Kolkata a Asia/Catmandú, este es el comando que utilicé:

$ timedatectl set-timezone Asia/Kathmandu

y para verificar el cambio, aquí está la salida del comando timedatectl:

$ timedatectl Hora local: Sat 2014-11-08 07:11:23 NPT Hora universal: Sat 2014-11-08 01:26:23 UTC Zona horaria: Asia/Catmandú (NPT, +0545) NTP habilitado: síNTP sincronizado: no RTC inlocal TZ: no DST activo: n/a

Puede ver que la zona horaria se ha cambiado al nuevo valor.

Configurar el RTC

También puede utilizar el comando timedatectl para configurar el RTC (reloj en tiempo real). Para aquellos que no lo sepan, el RTC es un reloj de ordenador alimentado por baterías que mantiene la hora incluso cuando el sistema está apagado. El comando timedatectl ofrece una opción set-local-rtc que puede utilizarse para mantener el RTC en hora local o en hora universal.

Esta opción requiere un argumento booleano. Si se proporciona 0, el sistema se configura para mantener el RTC en tiempo universal:

$ timedatectl set-local-rtc 0

pero en el caso de que se suministre 1, se mantendrá el RTC en hora local.

$ timedatectl set-local-rtc 1

Una palabra de precaución: Mantener el RTC en la zona horaria local no es totalmente compatible y creará varios problemas con los cambios de zona horaria y los ajustes de ahorro de luz diurna. Si es posible, utilice el RTC en UTC.

Otro punto que vale la pena señalar es que si se invoca set-local-rtc y se pasa la opción –adjust-system-clock, el reloj del sistema se sincroniza desde el RTC de nuevo, teniendo en cuenta la nueva configuración.

Por lo demás el RTC se sincroniza desde el reloj del sistema.

Configurar la sincronización horaria en red basada en NTP

NTP, o Network Time Protocol, es un protocolo de red para la sincronización de relojes entre sistemas informáticos a través de redes de datos de latencia variable y conmutación de paquetes. Su objetivo es sincronizar todos los ordenadores participantes con una diferencia de unos pocos milisegundos respecto a la hora UTC.

El comando timedatectl proporciona una opción set-ntp que controla si la sincronización horaria de red basada en NTP está habilitada. Esta opción espera un argumento booleano. Para habilitar la sincronización horaria basada en NTP, ejecute el siguiente comando:

$ timedatectl set-ntp true

Para deshabilitarla, ejecute:

$ timedatectl set-ntp false

Conclusión

Como se desprende de los ejemplos descritos anteriormente, el comando timedatectl es una herramienta muy útil para los administradores de sistemas que pueden utilizarlo para ajustar varios relojes del sistema y configuraciones RTC, así como para sondear servidores remotos para obtener información sobre la hora. Para saber más sobre el comando, dirígete a su página man.