Establecer la fecha, hora y zona horaria en la terminal de Ubuntu 24.04 LTS
Introducción
En Ubuntu Server, es muy importante disponer de una configuración correcta de la hora. El motivo es que influye en diferentes funciones y servicios que puede estar ofreciendo el equipo. Por ejemplo,una autenticación que utilice el protocolo kerberos podría fallar cuando el reloj del sistema no se encuentre convenientemente sincronizado. Pero no es el único caso, también podría afectar al funcionamiento de las tareas programadas, los accesos a bases de datos, los registros de eventos, etc.
Por este motivo, hoy aprenderemos los comandos básicos que nos permiten actuar sobre la configuración horaria del sistema operativo.
El artículo de hoy lo desarrollaremos sobre Ubuntu Server pero, para ponerlo en práctica sobre la versión de escritorio, solo tienes que abrir una ventana de terminal. Por ejemplo, usando la combinación de teclas Alt + Control + T.
Obtener información sobre la configuración horaria
La forma más sencilla de obtener información sobre la fecha y la hora que tiene el sistema en este momento, es utilizar el siguiente comando:
date
Al usarlo, obtendremos la fecha, la hora y la franja horaria que el sistema tiene registrado en estos momentos. No obstante, el formato es un tanto peculiar, porque aparece en el siguiente orden:
-
Día de la semana.
-
Mes.
-
Día del mes.
-
Hora (hora, minuto y segundo, en formato de 24 horas).
-
Zona horaria. En el ejemplo de abajo, verás que el equipo utiliza la hora universal (UTC).
La hora universal o UTC (del inglés, Universal Time Coordinated), hace referencia a la hora estándar que regula el tiempo para todo el planeta.
UTC permanece sincronizado con la hora media del meridiano de Greenwich, que depende de la duración del día solar.
No obstante, si vives en España, es muy común que muestre el valor CEST (Central European Summer Time), que corresponde a UTC + 2, o CET (Central European Time), que equivale a UTC + 1. El primero cuando esté vigente el horario de verano y el segundo durante el de invierno. Incluso puede aparecer Europe/Madrid.
Como es lógico, en otras partes del planeta, los valores serán diferentes.
-
Año.
De cualquier modo, si necesitas un mayor grado de detalle, puedes recurrir al comando timedatectl, que permite obtener, y también modificar, la configuración de fecha, hora y zona horaria del equipo.
En su versión más simple, basta con escribir su nombre:
timedatectl
Como puedes ver en la siguiente imagen, ahora la salida es mucho más completa.
En las primeras tres líneas nos ofrece la siguiente información:
-
La hora local (Local time).
-
La hora universal (Universal time).
-
La hora del reloj interno (RTC time). Las siglas RTC proceden de real-time clock, en español, reloj de tiempo real.
En los tres casos, la fecha/hora sigue el siguiente formato:
-
Día de la semana.
-
Año-mes-día.
-
Hora:minuto:segundo.
-
Zona horaria a la que corresponde la información.
Justo debajo, encontramos cuatro datos más:
-
La zona horaria que estamos utilizando (Time zone), que debe coincidir con lo indicado al final de la línea Local time, solo que ahora contiene más información: incluye el nombre completo de la zona actual, el nombre resumido (tal y como aparecía en la línea Local time), y la diferencia horaria con el horario UTC (en este caso, lógicamente será 0)
-
Si el reloj se mantiene sincronizado (System clock synchronized). Como puedes ver en la imagen siguiente, en nuestro ejemplo, la respuesta es afirmativa.
-
Si se encuentra activo el servicio de sincronización horaria (systemd-timesyncd.service active). De nuevo, en nuestro ejemplo, la respuesta es afirmativa.
-
Si el reloj del sistema está sincronizado con la zona horaria local (RTC in local TZ). Y, como puedes ver en la imagen, en este caso, la respuesta es no.
Por último, una forma rápida de averiguar la zona horaria que tenemos activa, consiste en consultar el contenido del archivo donde se guarda. En concreto, ese archivo se llama timezone y se encuentra dentro del directorio /etc. Por lo tanto, para ver su contenido podemos escribir algo como esto:
cat /etc/timezone
Y a estas alturas, el resultado es bastante predecible…
Cambiar la zona horaria
Imagina, por un momento, que has instalado el sistema operativo en una ubicación, pero va a dar servicio en otra. Una forma de evitar problemas puede consistir en modificar su zona horaria. Para lograrlo, volveremos a recurrir a timedatectl.
Para comenzar, necesitaremos averiguar las zonas horarias que tenemos a nuestra disposición. Eso lo conseguiremos con la siguiente orden:
timedatectl list-timezones
Al pulsar la tecla Intro, aparecerá una lista como la que hay en la imagen siguiente.
Avanzaremos línea a línea con la tecla Intro y una página completa con la tecla AvPág. También puedes retroceder una página con RePág y para terminar, usaremos la tecla Q.
Cuando localicemos nuestra zona horaria, la memorizamos o la anotamos. En mi caso, usaré Europe/Madrid.
Cuando sabemos lo que estamos buscando, o al menos una parte, podemos filtrar la salida del comando anterior con la orden grep. Por ejemplo:
timedatectl list-timezones | grep "Eurome/M"
Ahora que ya lo tenemos claro, lo siguiente será establecer la nueva zona horaria. Y lo haremos con la siguiente orden:
sudo timedatectl set-timezone Europe/Madrid
Observa que, como ahora estamos modificando la configuración del sistema, necesitaremos privilegios administrativos.
Al hacerlo, parecerá que no ha pasado nada, pero podemos valorar el resultado realizando las comprobaciones del principio.
Así comprobaremos que el comando timedatectl ofrece la salida esperada. Sin embargo, el contenido de archivo /etc/timezone mantiene su valor anterior. Supongo que será un error y que el equipo de desarrollo de Ubuntu lo subsanará en poco tiempo. De hecho, en versiones anteriores, los resultados de ambas comprobaciones eran consistentes.
De cualquier modo, no te preocupes, porque a continuación te explicamos un segundo modo que sí ofrece el resultado esperado.
Aún así, antes de continuar, e gustaría detenerme en un detalle. Ahora, al final de la línea Local time, el comando timedatectl nos informa de que nos encontramos en la zona horaria CEST. Sin embargo, en la línea Universal time aparece el texto UTC. De hecho, entre ambos valores existe una diferencia de 2 horas… Justo lo mismo que indica la línea Time zone, que además, en el nombre de la zona horaria indica Europe/Madrid, que es el valor que hemos elegido.
Cambiar la zona horaria (segundo modo)
Si el modo anterior de cambiar la zona horaria te ha parecido fácil, el que te voy a explicar ahora te va a encantar. Usaremos el comando dpkg-reconfigure, que tiene la finalidad de modificar la configuración de los paquetes después de que estos hayan sido instalados. Debemos proporcionarle el nombre del paquete y él nos solicita la información necesaria.
En nuestro caso, el paquete a reconfigurar se llama tzdata, que es el que contiene los datos para la implementación de la hora local estándar.
Por lo tanto, para aplicar este método, escribiremos algo como esto:
sudo dpkg-reconfigure tzdata
Al hacerlo, dpkg-reconfigure nos muestra un asistente, en modo texto que nos facilita los cambios.
En la primera pantalla, el asistente nos pide el área geográfica que queremos configurar. Podemos utilizar las teclas de cursor para situarnos sobre el valor correcto.
Esto nos llevará al segundo paso, donde obtendremos una lista de ciudades del área geográfica elegida en el paso anterior.
De nuevo, nos desplazamos con las teclas de cursor hasta encontrar la ciudad que más se se adecue a nuestras necesidades.
Con esto, ya hemos terminado la tarea. Aunque antes de acabar, nos muestra el nuevo valor para la zona horaria, la hora local y la hora UTC.
Si ahora volvemos a realizar la comprobación anterior…
Establecer la hora de forma manual
En contadas ocasiones, también puede resultar útil establecer la fecha y la hora de forma manual, evitando que se sincronice con Internet. De este modo, podemos hacer creer al sistema operativo que se encuentra en un momento diferente.
Para lograrlo, comenzaremos por deshabilitar la sincronización, algo que conseguimos usando, de nuevo, el comando timedatectl. En este caso, le añadiremos el argumento set-ntp con el valor off. En definitiva, la sintaxis quedará así:
sudo timedatectl set-ntp off
Y para comprobar que ha surtido efecto, basta con volver a usar timedatectl sin argumentos.
Después de esto, estaremos listos para establecer la hora que prefiramos. Y para lograrlo volveremos a utilizar el comando date que conocemos del principio. La diferencia es que ahora incluiremos el argumento –set al que seguirá un texto con la fecha/hora en el formato «año-mes-dia hora:minuto«.
Para nuestro artículo, usaremos el siguiente ejemplo:
sudo date --set "2018-7-1 11:15"
De nuevo, como estamos modificando la configuración del sistema, necesitaremos privilegios administrativos
Para comprobar que los datos han cambiado, solo tenemos que volver a usar date sin argumentos (tampoco es necesario sudo).
Y cuando volvamos a necesitar que se sincronice automáticamente, bastará con volver a ejecutar el comando timedatectl, pero en este caso añadiendo el argumento set-ntp con el valor on.
Y si quieres, puedes volver a consultar el resultado, tanto con timedatectl como con date:
Y esto es todo por el momento. Espero que te haya resultado útil.