timedatectl: comprobar la sincronización de la hora del servidor Linux y configurar la zona horaria

Entorno de pruebaFamilia RHELAlmaLinux 9.8systemd 252 · chrony 4.8Cuenta rootDebian 12 cuenta normalVerificado el 2026-10-29
Comandos de información y configuración del sistematimedatectlUbicación/usr/bin/timedatectl

timedatectl es un comando de systemd que comprueba y cambia el reloj del sistema, la zona horaria y el estado de sincronización de la hora por NTP de un servidor Linux. Al comprobar el estado de sincronización en un servidor AlmaLinux 9 que usa chrony y en un servidor Debian 12 que usa ntpsec, los dos servidores tenían el reloj sincronizado, pero la línea NTP service mostró active en uno y n/a en el otro.

Las salidas siguientes son los resultados de ejecutar los comandos en los dos servidores. Solo se sustituyeron por valores de ejemplo los nombres de host, las direcciones IP y los números de versión de los paquetes, y los comandos que cambian la hora o la zona horaria no se ejecutaron en el servidor en producción.

1️⃣ Uso de timedatectl y comprobación de la hora del servidor Linux

Ejecutar timedatectl sin opciones da el mismo resultado que añadir status. La hora del reloj del sistema y del reloj de hardware (RTC), la zona horaria y el estado de sincronización aparecen juntos en una pantalla. Este es el resultado en el servidor Debian 12.

timedatectl
               Local time: Wed 2026-10-28 19:49:57 UTC
           Universal time: Wed 2026-10-28 19:49:57 UTC
                 RTC time: Wed 2026-10-28 19:49:57
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: n/a
          RTC in local TZ: no

La zona horaria del servidor Debian 12 es Etc/UTC, por eso Local time y Universal time mostraron la misma hora. Lo que indica cada línea y los resultados de los dos servidores están en la tabla siguiente.

Línea de salidaQué muestraResultados de los dos servidores y qué comprobar
Local timeHora actual del reloj del sistema con la zona horaria aplicadaAl cambiar la zona horaria, solo esta línea y la salida de date pasan a la nueva zona
Universal timeLa misma hora expresada en UTCNo cambia al cambiar la zona horaria; en el servidor Debian 12 (Etc/UTC) coincide con Local time
RTC timeHora del reloj de hardware (RTC)Aparece sin zona horaria; si RTC in local TZ es no, es la hora UTC
Time zoneZona horaria configurada, su abreviatura y la diferencia con UTCPara cambiarla, usa un nombre de la lista de list-timezones
System clock synchronizedSi el kernel considera que el reloj está sincronizadoyes en los dos servidores; si es no, comprueba primero el servidor de referencia con chronyc tracking o ntpq -p
NTP serviceSi está en marcha el servicio de sincronización que timedatectl activa y desactivaactive en AlmaLinux 9 (chrony), n/a en Debian 12 (ntpsec); n/a significa que timedatectl no conoce el servicio, así que compruébalo con systemctl
RTC in local TZSi el reloj de hardware se mantiene en hora local (no = UTC)no en los dos servidores; el comando para pasar de yes a UTC es set-local-rtc 0

Linux tiene dos relojes. El reloj del sistema es el que mantiene el kernel después del arranque, y el reloj de hardware es el reloj de la placa base que conserva la hora aunque el servidor esté apagado.

El reloj de hardware se lee directamente con hwclock. hwclock muestra la hora convertida a la zona horaria actual. En el servidor AlmaLinux, al leerlo con TZ=UTC delante del comando, el resultado fue una hora UTC terminada en +00:00.

TZ=UTC hwclock --show
2026-10-28 19:53:33.006788+00:00

En el servidor Debian 12, al que se accedió con una cuenta normal, el mismo comando terminó sin poder acceder al reloj de hardware.

/usr/sbin/hwclock --show
hwclock: Cannot access the Hardware Clock via any known method.
hwclock: Use the --verbose option to see the details of our search for an access method.

La línea RTC in local TZ es el mismo ajuste que la tercera línea del archivo /etc/adjtime. En el servidor AlmaLinux la tercera línea era UTC, lo que significa que el reloj de hardware se mantiene en UTC.

cat /etc/adjtime
0.0 0 0.0
0
UTC

Para leer valores en un script, usa show en lugar de status. En el servidor Debian 12 muestra la misma información en forma nombre=valor, una por línea.

timedatectl show
Timezone=Etc/UTC
LocalRTC=no
CanNTP=no
NTP=no
NTPSynchronized=yes
TimeUSec=Wed 2026-10-28 19:49:57 UTC
RTCTimeUSec=Wed 2026-10-28 19:49:57 UTC

Elige las propiedades con -p y añade --value para dejar solo los valores, sin los nombres. Usa esta forma para sacar solo el nombre de la zona horaria.

timedatectl show -p Timezone --value
Etc/UTC

🔲 Simulador del comando timedatectl

En el simulador siguiente puedes escribir tú mismo los comandos para ver la hora, listar las zonas horarias, cambiar la zona horaria y comprobar la sincronización con chronyc.

Simulador del comando timedatectlsystemd 252 · chrony 4.8
[root@server work]#
Funciona solo dentro del navegador. La zona horaria cambiada vuelve al inicio (Etc/UTC) al recargar, y ↑↓ recupera los comandos anteriores.

2️⃣ Estado de sincronización de la hora del servidor Linux

La línea System clock synchronized indica si el kernel considera que el reloj está sincronizado, y la línea NTP service indica si está en marcha el servicio de sincronización que timedatectl puede activar y desactivar. Con show, los mismos valores aparecen como NTPSynchronized y NTP, y CanNTP indica si hay un servicio de sincronización que se pueda activar y desactivar.

En el servidor AlmaLinux 9 con chrony, los tres valores eran yes.

timedatectl show -p CanNTP -p NTP -p NTPSynchronized
CanNTP=yes
NTP=yes
NTPSynchronized=yes

En el servidor Debian 12, que ajusta la hora con ntpsec, solo NTPSynchronized era yes, y CanNTP y NTP eran no. Por eso la línea NTP service salió como n/a en la pantalla status de este servidor.

timedatectl show -p CanNTP -p NTP -p NTPSynchronized
CanNTP=no
NTP=no
NTPSynchronized=yes

El servicio ntpsec en sí estaba en marcha.

systemctl is-active ntpsec
active

Los únicos servicios de sincronización que conoce timedatectl son los escritos en los archivos de lista de la carpeta ntp-units.d, y los paquetes de la distribución colocan estos archivos en /usr/lib/systemd/ntp-units.d/ (según el manual oficial). El servidor AlmaLinux 9 tenía un archivo de lista instalado por el paquete chrony, con una sola línea: chronyd.service.

cat /usr/lib/systemd/ntp-units.d/50-chronyd.list
chronyd.service
rpm -qf /usr/lib/systemd/ntp-units.d/50-chronyd.list
chrony-4.8-10.el9.x86_64

El servidor Debian 12 no tenía esta carpeta. Como ntpsec no está en la lista, timedatectl sabía que el reloj estaba sincronizado, pero no podía activar ni desactivar ese servicio.

ls /usr/lib/systemd/ntp-units.d/
ls: cannot access '/usr/lib/systemd/ntp-units.d/': No such file or directory
🖥️ timedatectlstatus, show, set-ntp
ntp-units.d/*.listLista de servicios de sincronización que timedatectl activa y desactiva
chronyd.serviceEn la lista → NTP service: active
ntpsec.serviceFuera de la lista → NTP service: n/a

3️⃣ Comprobar la sincronización de la hora con chronyc

En un servidor con chrony, el servidor de hora que sigue el reloj se comprueba con chronyc. sources muestra los servidores de hora que consulta chronyd y su estado, uno por línea.

chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^- 192.0.2.10                    2  10   377   943   +272us[ +275us] +/-   55ms
^- ntp1.example.com              2  10   377    80    -28us[  -32us] +/- 3655us
^- 198.51.100.33                 3  10   257   384   -151us[ -156us] +/-   97ms
^- 198.51.100.82                 3  10   177   532   +157us[ +149us] +/-   45ms
^* 192.0.2.123                   3   4   377     2    -21us[  -23us] +/-  312us

El ^ inicial indica un servidor de hora, el * como segundo carácter indica el servidor de referencia que sigue el reloj ahora, y - indica un candidato que no entra en el cálculo. Poll 4 en el servidor de referencia significa que se consulta cada 16 segundos (2 elevado a 4), y Reach 377 indica que se recibieron las ocho últimas respuestas.

tracking muestra cuánto se desvía el reloj del sistema de la hora del servidor de referencia.

chronyc tracking
Reference ID    : C000027B (192.0.2.123)
Stratum         : 4
Ref time (UTC)  : Wed Oct 28 19:50:21 2026
System time     : 0.000002422 seconds slow of NTP time
Last offset     : -0.000002098 seconds
RMS offset      : 0.000000981 seconds
Frequency       : 6.348 ppm slow
Residual freq   : -0.001 ppm
Skew            : 0.017 ppm
Root delay      : 0.000300815 seconds
Root dispersion : 0.000150780 seconds
Update interval : 16.3 seconds
Leap status     : Normal

La línea System time muestra que el reloj del sistema iba 0.000002422 segundos por detrás de la hora NTP, y Leap status era Normal. Un Update interval de 16.3 segundos es el intervalo entre las dos últimas actualizaciones del reloj.

A qué servidores se consulta lo fijan las líneas pool y server de /etc/chrony.conf. Si se dejan solo las líneas de ajuste, sin comentarios ni líneas vacías, queda así.

grep -v "^#" /etc/chrony.conf | grep -v "^$"
pool 2.almalinux.pool.ntp.org iburst
sourcedir /run/chrony-dhcp
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
keyfile /etc/chrony.keys
ntsdumpdir /var/lib/chrony
leapsectz right/UTC
logdir /var/log/chrony
server 192.0.2.123 prefer iburst minpoll 4 maxpoll 4

La línea pool consulta el pool NTP de AlmaLinux, y prefer en la última línea server es una opción que hace que chronyd elija este servidor antes que los demás. makestep 1.0 3 es un ajuste que, en las tres primeras actualizaciones tras arrancar chronyd, corrige de golpe un reloj desviado más de 1 segundo, y después lo ajusta poco a poco haciéndolo ir algo más rápido o más lento. rtcsync hace que el kernel copie la hora del sistema al reloj de hardware cada 11 minutos (según la documentación oficial).

En el servidor Debian 12 con ntpsec, la misma información se comprobó con ntpq -p. El * inicial es el servidor de referencia, y los tres servidores se consultaban cada 1024 segundos.

ntpq -p
     remote           refid      st t when poll reach   delay   offset   jitter
===============================================================================
+203.0.113.43    198.51.100.28    2 u  835 1024  377 184.6893  -0.1018   1.4879
+203.0.113.44    198.51.100.27    2 u  547 1024  377 183.0827  -2.4227   4.0957
*ntp2.example.co 198.51.100.40    2 u  440 1024  377 177.4670  -0.5814   1.7070

4️⃣ Cambiar la zona horaria con timedatectl

Los nombres de zona horaria se consultan con list-timezones. La mayoría tienen la forma Continente/Ciudad, uno por línea, y los dos servidores tenían 598.

timedatectl list-timezones | head -5
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
timedatectl list-timezones | wc -l
598

La lista es larga, así que fíltrala con grep para buscar un nombre.

timedatectl list-timezones | grep -i new_york
America/New_York

La zona horaria se cambia escribiendo un nombre de la lista después de set-timezone. Este comando cambia el enlace /etc/localtime por el nuevo archivo de zona horaria, así que desde una cuenta normal se ejecuta con sudo.

sudo timedatectl set-timezone America/New_York

Comprueba con ls -l si /etc/localtime es un enlace a un archivo de zona horaria.

ls -l /etc/localtime
lrwxrwxrwx 1 root root 27 Sep 24 12:52 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC

Un nombre que no está en la lista se rechazó al instante, antes de cambiar la zona horaria.

timedatectl set-timezone Mars/Olympus
Failed to set time zone: Invalid or not installed time zone 'Mars/Olympus'

Cambiar la zona horaria no cambia la hora del reloj del sistema; solo Local time y la salida del comando date aparecen en la nueva zona. En un servidor con el reloj de hardware en UTC, el reloj de hardware tampoco cambia (según el manual oficial).

5️⃣ Activar NTP y fijar la hora manualmente con timedatectl

set-ntp true inicia el primer servicio de la lista de servicios de sincronización y lo habilita en el arranque. false detiene los servicios de la lista y los deshabilita en el arranque (según el manual oficial).

sudo timedatectl set-ntp true

En el servidor Debian 12, sin archivo de lista, el comando terminó con NTP not supported incluso con false, el valor actual. Un servicio que no está en la lista, como ntpsec, se inicia y se detiene directamente con systemctl.

timedatectl set-ntp false
Failed to set ntp: NTP not supported

Para fijar la hora a mano, escribe la fecha y la hora después de set-time. Este comando ajusta el reloj de hardware junto con el reloj del sistema.

sudo timedatectl set-time '2026-10-28 20:00:00'

En el servidor Debian 12, introducir un valor con un formato incorrecto terminó con un error sin cambiar la hora.

timedatectl set-time bad
Failed to parse time specification 'bad': Invalid argument

En un servidor con chrony, para corregir de una vez un reloj muy desviado se usa chronyc makestep.

sudo chronyc makestep

makestep descarta la diferencia restante que se iba corrigiendo poco a poco y hace que el reloj del sistema salte esa cantidad de inmediato. La documentación oficial advierte que un cambio brusco de hora puede afectar a algunos programas, así que úsalo solo cuando el reloj esté tan desviado que no se pueda corregir despacio.

🔢 FAQ & contenido recomendado

Los servicios NTP como chrony y ntpsec mantienen el reloj sincronizado, así que casi nunca hace falta ejecutar rdate con cron. En el servidor AlmaLinux 9 comprobado, rdate no estaba instalado ni aparecía en la lista de paquetes instalables. El repositorio del servidor Debian 12 tenía el paquete rdate 1.11, pero no estaba instalado.

timesync-status es un comando exclusivo de systemd-timesyncd. Tanto en el servidor AlmaLinux 9 con chrony como en el servidor Debian 12 con ntpsec terminó con el error Failed to query server. En estos servidores, el estado de sincronización se comprueba con chronyc tracking o ntpq -p.

El manual oficial explica que mantener el reloj de hardware en hora local puede causar problemas al cambiar la zona horaria o cuando cambia el horario de verano. Por eso recomienda dejarlo en UTC siempre que se pueda, y el comando para pasarlo a UTC es sudo timedatectl set-local-rtc 0. Los dos servidores comprobados estaban en no (UTC).

ℹ️ Aviso de afiliados
El contenido de este sitio incluye enlaces de afiliado. Cuando un visitante compra un producto o servicio a través de uno de ellos, el sitio recibe una comisión del vendedor. El importe que paga el comprador(baja durante las promociones ↓)no aumenta. Los precios, descuentos y existencias publicados corresponden al momento de redacción y pueden variar, así que confírmalos con el vendedor antes de comprar. Los productos se eligen y evalúan con criterios propios, y las comisiones no influyen en el orden ni en el contenido de las reseñas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Demuestra que eres humano: 2   +   2   =