Configuración de hora ********************** En una máquina hay dos horas diferenciadas: + La hora del reloj de *hardware*, también llamada hora |RTC|, y que conserva la pila cuando el sistema está apagado y el ordenador desenchufado de una fuente de corriente. + La hora del sistema operativo. Al arrancar el sistema, éste toma la hora |RTC| y, aunque esto pudiera significar que siempre coinciden, no tiene por qué ser así: * Es muy común que la hora |RTC| exprese la hora |UTC|, mientras que el reloj del sistema la hora local (en España, la hora |CET|). En algún lugar de la configuración estará definido si la hora |RTC| es la |UTC| o la local. * La hora del sistema puede sincronizarse con un servidor de hora mediante el :ref:`protocolo NTP ` que es, en realidad, lo más recomendable, porque la hora del servidor siempre será más fiable que la hora |RTC|. Por supuesto, también puede copiarse la hora del sistema al reloj del *hardware*. De hecho, el reloj del *hardware* no se caracteriza por su fiabilidad\ [#]_, por lo que es muy recomendable hacerlo si la del sistema se sincroniza con un servidor externo. .. rubric:: Las fecha y hora antes de :ref:`systemd `. Tradicionalmente, para configurar la hora desde la *shell* se han venido usando varias órdenes: .. _date: .. index:: date :manpage:`date(1)` Que establece la hora del sistema con la opción :kbd:`-s`. No nos interesa ya este uso, pero sigue siendo muy útil para averiguar la hora del sistema en cualquier formato que se nos ocurra:: # date mié feb 3 10:04:07 CET 2021 # date +'%H:%M - %d/%m/%Y' 10:04 - 03/02/2021 El modo de introducir el formato de salida de la hora esta documentado en la página del manual. También tiene mucho interés para convertir una hora a un formato de salida distinto, ya que con la opción :kbd:`-d` se puede hacer que la hora de referencia no sea la del sistema sino una arbitraria. La forma de expresar esta hora de referencia está explicada en la documentación info (quizás tenga que instalar el paquete *info* para poder leerla):: # info date .. _hwclock: .. index:: hwclock :manpage:`hwclock(8)` Se utilizaba para consultar o establecer la hora |RTC|, bien manualmente o bien copiándola de la del sistema. A diferencia de :ref:`date ` que sigue siendo útil para consulta, este comando no tiene ya excesiva utilidad. Paquete **tzdata** Este paquete permitía escoger el huso horario para determinar cuál es nuestra hora local:: # dpkg-reconfigure tzdata El resultado de la selección (p.e. "Europe/Madrid") se almacena en :file:`/etc/timezone`. Además, en :file:`/etc/default/rcS` se especificaba si la hora |RTC| representaba la |UTC| o la local. Un cliente |NTP| Para poder sincronizar la hora con un servidor externo se utilizaba un cliente como :manpage:`ntpdate` o :manpage:`sntp`. .. _timedatectl: .. index:: timedatectl .. rubric:: Configuración moderna Actualmente, sin embargo, toda la configuración (la de ambos relojes, la del huso horario, la de si se usa |UTC| en el reloj de *hardware* y la de si se sincroniza o no la hora), se realiza mediante la orden :manpage:`timedatectl(1)`:: $ timedatectl status Local time: mié 2021-02-03 20:57:00 CET Universal time: mié 2021-02-03 19:57:00 UTC RTC time: mié 2021-02-03 19:57:00 Time zone: Europe/Madrid (CET, +0100) System clock synchronized: yes NTP service: active RTC in local TZ: no Toda la configuración puede hacerse a través de esta orden de manera bastante sencilla: basta con leer su paǵina de manual. Lo aconsejable es: + Que este habilitada la sincronización con |NTP|. + Que la hora |RTC| refleje la hora |UTC|. La propia orden facilita información sobre el protocolo |NTP| (p.e.los servidores con los que se sincroniza), pero no suele ser necesario hacer cambios, a menos que deseemos converir nuestra máquina en un servidor |NTP| para la red local, en cuyo caso deberemos deshabilitar la sincronización porque de ella se encargará el propio *software* del servidor. .. note:: Esta orden al establecer la hora, fija la hora local del sistema y solidariamente, establecerá la hora |RTC| según deba reflejar la hora |UTC| o la hora local. .. [#] Y si la pila está agotada directamente se reseteará cadaz vez que el ordenador se quede sin suministro eléctrico. .. |RTC| replace:: :abbr:`RTC (Real Time Clock)` .. |UTC| replace:: :abbr:`UTC (Universal Time Clock)` .. |CET| replace:: :abbr:`CET (Central European Time)` .. |NTP| replace:: :abbr:`NTP (Network Time Protocol)`