Cómo usar el comando timedatectl en Linux

Varios relojes de pared amontonados, todos mostrando diferentes tiempos.
POR666/Shutterstock.com

El comando de Linux timedatectlle permite configurar su hora, fecha y zona horaria para el reloj de su sistema y su reloj en tiempo real. Dedique un momento y le mostraremos cómo funciona todo.

Todo es relativo

El tratamiento del tiempo de su computadora es una de esas cosas que puede esperar que sean bastante sencillas. Al menos, hasta que empieces a investigarlo.

El reloj del sistema Linux cuenta el número de segundos desde la época de Unix . Esto fue a las 00:00:00 del 1 de enero de 1970, UTC. UTC significa tiempo universal coordinado, pero generalmente se dice tiempo universal coordinado o simplemente tiempo universal. Este es el estándar de tiempo por el cual el mundo maneja y regula el tiempo. Diferentes zonas horarias aplican una compensación a UTC para obtener su hora local. Algunas zonas horarias están por delante de UTC y otras están por detrás.

El reloj del sistema en las computadoras Linux está basado en software. Obviamente, no puede funcionar cuando la computadora está apagada. Otro reloj, un reloj en tiempo real basado en hardware respaldado por batería, puede funcionar cuando la computadora está apagada. Su propósito es decirle al reloj del sistema qué hora es cada vez que se inicia Linux. A menos que sea posible el acceso a un servidor de protocolo de tiempo de red (NTP).

Los servidores NTP son servidores que brindan información precisa sobre la hora a las computadoras que la solicitan. Si enciende su computadora o computadora portátil y no hay acceso a Internet, o no se ha configurado para usar servidores NTP , el reloj en tiempo real se usa para preparar el reloj del sistema en lugar de un servidor NTP.

El reloj del sistema siempre está en UTC. Cualquier aplicación que necesite adquirir la hora local necesita:

  • Accede al reloj del sistema y obtén UTC
  • Sepa en qué zona horaria se encuentra y aplique la compensación correcta
  • Tenga en cuenta si el horario de verano está vigente
Relacionado:  Cómo cerrar Microsoft Teams por completo cuando cierra la aplicación

La conversión de la hora UTC a la hora local la realiza la aplicación, no el reloj del sistema. O, más exactamente, la conversión la realizan las bibliotecas de fecha y hora a las que está vinculada la aplicación. Es por eso que es vital que su computadora sepa qué zona horaria es, qué hora UTC es, cuántos segundos han pasado desde la época de Unix y si el horario de verano está vigente.

En las distribuciones de Linux basadas en systemd, usamos el timedatectlcomando para ver o cambiar esas configuraciones y valores.

Primeros pasos con timedatectl

Para ver los datos actuales y la hora y otros valores, utilice el timedatectlcomando con el statusoperador.

estado de timedatectl

La salida del comando timedatectl usando el operador de estado

En realidad, puede eliminar el estado y aún obtendrá el mismo resultado.

horafechactl

La salida del comando timedatectl sin operador

Ambos conjuntos de salida muestran:

  • Hora local : La hora que la computadora cree que es, según su zona horaria.
  • Hora Universal : La hora UTC.
  • Hora RTC : la hora que utiliza el reloj en tiempo real. Por lo general, esto es UTC.
  • Zona horaria : Información sobre la zona horaria configurada.
  • Reloj del sistema sincronizado : indica si el reloj del sistema está sincronizado con un servidor NTP.
  • Servicio NTP : si el servicio NTP de la computadora está activo.
  • RTC en TZ local : si el reloj en tiempo real está utilizando la hora local en lugar de UTC.

Puede ver cuántas zonas horarias timedatectladmite el comando escribiendo:

timedatectl lista-zonas horarias | wc-l

Contando las zonas horarias timedatectl

Eso es mucho más de lo que hay  zonas horarias en el mundo . Si canalizamos la salida y grepfiltramos las entradas para «América» ​​y las canalizamos aless , podemos desplazarnos por una lista más manejable.

timedatectl lista-zonas horarias | grep "América/" | menos

Filtrado de zonas horarias americanas con grep

Al revisar esa lista, verá que «América» ​​tiene el significado más amplio posible. Lo segundo que notará es que la mayoría de las entradas no son zonas horarias reales.

Relacionado:  Cómo comprobar qué aplicaciones están optimizadas para Mac M1

Lista de zonas horarias "americanas" en menos

Configuración de la zona horaria

Si examina la lista sin filtrar de zonas horarias admitidas por timedatectl, verá lugares y zonas horarias. Para establecer una zona horaria, puede especificarla por nombre, como EST o GMT, o puede elegir una ubicación en la misma zona horaria que usted, como Londres o Nueva York.

Restablecer su zona horaria no es algo que hará con frecuencia, pero tal vez se haya mudado de casa o esté trabajando fuera por un tiempo y desee localizar su computadora portátil. Si necesita restablecer su zona horaria, elija una ubicación en la zona horaria que desea usar.

Configuraremos esta computadora en la hora de la montaña, que es la misma zona horaria que Edmonton. A continuación, veremos cómo ha cambiado la configuración.

timedatectl set-timezone "América/Edmonton"
horafechactl

Nueva zona horaria y configuración de hora

Nuestra zona horaria ha cambiado, nuestra hora local se ha alterado y nuestro desplazamiento de UTC ha aumentado.

Configuración manual de la hora y la fecha

Aunque es posible configurar manualmente la hora y la fecha, por lo general no será necesario. El uso de sincronización de tiempo y NTP es la forma preferida de mantener la hora y la fecha precisas de su computadora. Si intenta cambiar la fecha o la hora de su computadora, probablemente obtendrá un error que le indicará que la sincronización de hora está en uso.

timedatectl set-time 10:30:00

Mensaje de error porque la sincronización horaria está vigente

Use este comando para desactivar el servicio de sincronización de tiempo:

sudo systemctl detener systemd-timesyncd.servicio

Puede configurar la hora, la fecha o ambas mediante el timedatectloperador de configuración de hora. las fechas están en orden año-mes-día AAAA-MM-DD, y la hora está en orden horas-minutos-segundos HH:MM:SS. Vamos a configurar la hora y la fecha con este comando:

timedatectl set-time "2022-01-30 10:30:00"

A continuación, comprobaremos que se han realizado los cambios mediante timedatectl.

horafechactl

Configuración manual de la hora y la fecha

La fecha y la hora han cambiado. Además, tenga en cuenta que la computadora está usando una hora UTC falsa. También se nos informa que el reloj del sistema no está sincronizado y el servicio NTP está inactivo.

Relacionado:  Cómo descargar e instalar Steam en Linux

Si tiene acceso a Internet, tan pronto como restablezca el servicio de sincronización horaria, se recuperará la hora y todos los detalles se restablecerán correctamente.

sudo systemctl start systemd-timesyncd.servicio
horafechactl

Reinicio del servicio NTP y restauración de los valores de tiempo correctos

RTC: ¿UTC o LTZ?

Es posible configurar su reloj en tiempo real en la hora de su zona horaria local en lugar de en UTC; es posible, pero desaconsejable. Si realiza el cambio, verá una advertencia sobre los efectos nefastos que esto puede tener en su sistema en el futuro.

La razón para mostrarle este método es que puede encontrar una máquina en la que tenga problemas extraños con la configuración de la hora. Así es como se vuelve a configurar el reloj en tiempo real en UTC.

Primero, tendremos que configurarlo en la zona horaria local.

timedatectl set-local-rtc 1

Luego le preguntaremos timedatectlpor su estado.

horafechactl

Ajuste del reloj en tiempo real a la zona horaria local y la advertencia que lo acompaña

Creo que han dejado claro sus sentimientos.

Para restaurar el reloj en tiempo real a UTC, use este comando:

timedatectl set-local-rtc 0

Configúralo y olvídalo

A menos que haya cometido un error durante la instalación de su distribución de Linux, o que se mude, generalmente no hay razón para modificar la configuración de su sistema y los relojes en tiempo real.

Establezca el reloj del sistema en su zona horaria, el reloj en tiempo real en UTC y asegúrese de que su sistema esté sondeando un servidor de protocolo de tiempo de red. Ese es el estado predeterminado después de la mayoría de las instalaciones.

Si están todos configurados, los sistemas de tiempo de su computadora se cuidarán solos.