Introducción
El control del tiempo preciso se ha convertido en un componente crítico de las implementaciones modernas de software. Ya sea que se esté asegurando de que los registros se registren en el orden correcto o que las actualizaciones de la base de datos se apliquen correctamente, el uso en los clústeres, etc. un tiempo fuera de sincronización puede causar errores, corrupción de datos y otros problemas de difícil depuración.
Debian 10 tiene sincronización de tiempo incorporada y activada por defecto usando el servidor de tiempo ntpd estándar, provisto por el paquete ntp
. En este artículo veremos algunos comandos básicos relacionados con el tiempo, verificaremos que el servicio ntpd esté activo y conectado a sus pares, y aprenderemos cómo activar el servicio de tiempo de red alternativo systemd-timesyncd.
Prerrequisitos
Antes de comenzar este tutorial, necesitará un servidor Debian 10 con un acceso no root, sudo
usuario habilitado.
Paso 1: navegar por los comandos de tiempo básicos
El comando más básico para averiguar la hora en su servidor es date
. Cualquier usuario puede escribir este comando para imprimir la fecha y la hora:
Output
Wed 31 Jul 2019 06:03:19 PM UTC
La mayoría de las veces, su servidor tendrá el valor predeterminado UTC zona horaria, como se resalta en la salida anterior. UTC es Tiempo universal coordinado, el tiempo a cero grados de longitud. El uso constante de Universal Time reduce la confusión cuando su infraestructura abarca varias zonas horarias.
Si tiene diferentes requisitos y necesita cambiar la zona horaria, puede usar el timedatectl
comando para hacerlo.
Primero, enumere las zonas horarias disponibles:
- timedatectl list-timezones
Se imprimirá una lista de zonas horarias en su pantalla. Puedes presionar SPACE
para avanzar y b
para subir de página. Una vez que encuentre la zona horaria correcta, anótela y escriba q
para salir de la lista
Ahora configure la zona horaria con timedatectl set-timezone
, asegurándose de reemplazar la parte resaltada a continuación con la zona horaria que encontró en la lista. Necesitarás usar sudo
con timedatectl
para hacer este cambio:
- sudo timedatectl set-timezone Europe/Madrid
Puede verificar sus cambios ejecutando date
de nuevo:
Output
Wed 31 Jul 2019 02:08:43 PM EDT
La abreviatura de la zona horaria debe reflejar el nuevo valor elegido.
Ahora que sabemos cómo verificar el reloj y establecer zonas horarias, asegurémonos de que nuestra hora se sincronice correctamente.
Paso 2 – Verificando el estado de ntpd
De forma predeterminada, Debian 10 ejecuta el servidor ntpd estándar para mantener sincronizada la hora de su sistema con un grupo de servidores de hora externos. Podemos comprobar que se está ejecutando con el systemctl
mando:
- sudo systemctl status ntp
Output
● ntp.service - Network Time Service
Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2019-07-31 13:57:08 EDT; 17min ago
Docs: man:ntpd(8)
Main PID: 429 (ntpd)
Tasks: 2 (limit: 1168)
Memory: 2.1M
CGroup: /system.slice/ntp.service
└─429 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 106:112
. . .
los active (running)
El estado indica que ntpd se inició correctamente. Para obtener más información sobre el estado de ntpd podemos usar el ntpq
mando:
Output
remote refid st t when poll reach delay offset jitter
==============================================================================
0.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
1.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
2.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
3.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
+208.67.72.50 152.2.133.55 2 u 12 64 377 39.381 1.696 0.674
+198.46.223.227 204.9.54.119 2 u 6 64 377 22.671 3.536 1.818
-zinc.frizzen.ne 108.61.56.35 3 u 43 64 377 12.012 1.268 2.553
-pyramid.latt.ne 204.123.2.72 2 u 11 64 377 69.922 2.858 0.604
+nu.binary.net 128.252.19.1 2 u 10 64 377 35.362 3.148 0.587
#107.155.79.108 129.7.1.66 2 u 65 64 377 42.380 1.638 1.014
+t1.time.bf1.yah 98.139.133.62 2 u 6 64 377 11.233 3.305 1.118
*sombrero.spider 129.6.15.30 2 u 47 64 377 1.304 2.941 0.889
+hydrogen.consta 209.51.161.238 2 u 45 64 377 1.830 2.280 1.026
-4.53.160.75 142.66.101.13 2 u 42 64 377 29.077 2.997 0.789
#horp-bsd01.horp 146.186.222.14 2 u 39 64 377 16.165 4.189 0.717
-ntpool1.603.new 204.9.54.119 2 u 46 64 377 27.914 3.717 0.939
ntpq
es una herramienta de consulta para ntpd. los -p
flag solicita información sobre los servidores NTP (o pagseers) ntpd está conectado a. Su salida será ligeramente diferente, pero debería enumerar los servidores de grupo de Debian predeterminados más algunos otros. Tenga en cuenta que ntpd puede tardar unos minutos en establecer conexiones.
Paso 3 – Cambiar a systemd-timesyncd
Es posible usar el sistema incorporado timesyncd componente para reemplazar ntpd. timesyncd es una alternativa más liviana a ntpd que está más integrada con systemd. Sin embargo, tenga en cuenta que no admite la ejecución como un servidor horario, y es un poco menos sofisticado en las técnicas que utiliza para mantener sincronizada la hora de su sistema. Si está ejecutando sistemas distribuidos complejos en tiempo real, es posible que desee seguir con ntpd.
Para usar timesyncd, primero debemos desinstalar ntpd:
Luego, inicie el servicio timesyncd:
- sudo systemctl start systemd-timesyncd
Finalmente, verifique el estado del servicio para asegurarse de que se esté ejecutando:
- sudo systemctl status systemd-timesyncd
Output
● systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
Drop-In: /usr/lib/systemd/system/systemd-timesyncd.service.d
└─disable-with-time-daemon.conf
Active: active (running) since Wed 2019-07-31 14:21:37 EDT; 6s ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 1681 (systemd-timesyn)
Status: "Synchronized to time server for the first time 96.245.170.99:123 (0.debian.pool.ntp.org)."
Tasks: 2 (limit: 1168)
Memory: 1.3M
CGroup: /system.slice/systemd-timesyncd.service
└─1681 /lib/systemd/systemd-timesyncd
Nosotros podemos usar timedatectl
para imprimir la comprensión actual del sistema de la hora:
Output
Local time: Wed 2019-07-31 14:22:15 EDT
Universal time: Wed 2019-07-31 18:22:15 UTC
RTC time: n/a
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Esto imprime la hora local, la hora universal (que puede ser la misma que la hora local, si no cambiaste de la zona horaria UTC) y alguna información sobre el estado de la hora de la red. System clock synchronized: yes
significa que el tiempo se ha sincronizado correctamente y NTP service: active
significa que timesyncd está habilitado y ejecutándose.
Conclusión
En este artículo, hemos mostrado cómo ver la hora del sistema, cambiar las zonas horarias, trabajar con ntpd y cambiar al servicio timesyncd del sistema. Si tiene necesidades de cronometraje más sofisticadas que las que hemos cubierto aquí, puede consultar la documentación oficial de NTPy también eche un vistazo a el proyecto de agrupación NTP, un grupo global de voluntarios que proporcionan gran parte de la infraestructura NTP del mundo.