Establecer la fecha, hora y zona horaria en la terminal de Ubuntu 24.04 LTS

Publicado por P. Ruiz en

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.

Salida del comando date en el momento de escribir este artículo.

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-001

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.

Salida del comando timedatectl en el momento de escribir este artículo.

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-002

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…

Contenido del archivo timezone.

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-003

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.

Salida de la orden timedatectl list-timezones.

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-004

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"

Esto nos permitirá asegurarnos de que, más adelante, usamos la sintaxis correcta.

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-005

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.

Escribimos el comando y, a continuación, la contraseña.

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-006

Al hacerlo, parecerá que no ha pasado nada, pero podemos valorar el resultado realizando las comprobaciones del principio.

Obtenemos la salida del comando timedatectl y el contenido del archivo /etc/timezone.

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-007

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

Solo tenemos que escribir, o copiar, el comando anterior y pulsar la tecla Intro.

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-008

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.

Una vez seleccionado, volvemos a pulsar la tecla Intro.

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-009

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.

Y cuando la hayamos seleccionado, pulsamos de nuevo la tecla Intro.

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-010

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.

Con esto, el asistente termina y devuelve el control al intérprete de comandos.

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-011

Si ahora volvemos a realizar la comprobación anterior…

… veremos que esta vez el cambio sí ha sido completo.

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-012

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.

Como vemos, el cambio se ha aplicaco correctamente.

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-013

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

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-014

Para comprobar que los datos han cambiado, solo tenemos que volver a usar date sin argumentos (tampoco es necesario sudo).

… Y vemos que devuelve los datos correctos

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-015

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.

Ejecutamos de nuevo el comando.

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-016

Y si quieres, puedes volver a consultar el resultado, tanto con timedatectl como con date:

Comprobamos que los valores devueltos vuelven a estar actualizado.

Establecer-la-fecha-hora-y-zona-horaria-en-la-terminal-de-Ubuntu-24-04-LTS-017

Y esto es todo por el momento. Espero que te haya resultado útil.