Categorías
GNU-Linux Miniguías

Cómo configurar la zona horaria y el reloj del sistema en Linux

Veremos cómo cambiar la configuración de la zona horaria en Linux y cómo utilizar NTP para sincronizar el reloj del sistema con nuestra zona horaria.

Comprobar la configuración de la zona horaria

Para comprobar la configuración actual.

date

salida:

lun 23 may 2022 07:53:31 -03

Cambiar la zona horaria en las distribuciones de Linux basadas en Debian

En las distribuciones de Linux basadas en Debian, incluyendo Debian, Ubuntu, Linux Mint, Elementary OS, etc, se puede cambiar la configuración de la zona horaria con este comando.

# dpkg-reconfigure tzdata

Se abrirá un cuadro de diálogo para que podamos seleccionar nuestra zona geográfica.

A continuación, seleccionamos la ciudad o región correspondiente a nuestra zona horaria. Yo vivo en Argentina, así que selecciono Buenos Aires.

Después de pulsar el botón Aceptar, el reloj del sistema se cambiará inmediatamente al de la zona horaria elegida.

Una forma agnóstica de cambiar la configuración de la zona horaria

Este método funciona en todas las distribuciones de Linux.

sudo ln -sf /usr/share/zoneinfo/

No presionar Enter aún, presionar la tecla Tab en su lugar.Aparecerá una lista de zonas geográficas, ahora introducimos el nombre de su zona después de sudo ln -sf /usr/share/zoneinfo/. Por ejemplo, yo ingresé América. A continuación, pulsar de nuevo la tecla Tab. Aparecerá una lista de Ciudades.

Introducir el nombre de la ciudad correspondiente a la zona horaria. Por ejemplo, yo he introducido Buenos Aires. Ahora presionar la tecla de espacio e ingrese /etc/localtime. Así que el comando final será

sudo ln -sf /usr/share/zoneinfo/tu-zona-geográfica/tu-ciudad /etc/localtime

Pulse enter para ejecutar este comando. Creará un enlace simbólico que apunta al archivo /etc/localtime a nuestro archivo de zona horaria específico. El reloj de nuestro sistema se actualizará inmediatamente, como podremos comprobar introduciendo el comando date en una terminal. Pero los usuarios con un entorno de escritorio como XFCE necesitan cerrar la sesión y volver a entrar para ver los cambios en la barra de tareas.

Reloj en tiempo real

RTC significa reloj en tiempo real, también conocido como reloj de hardware. Este reloj se alimenta de la pila CMOS de la placa base de nuestra computadora. Este reloj funciona todo el tiempo incluso si apagamos el equipo. A veces la hora del RTC es incorrecta.

Para averiguar la hora del RTC en nuestra computadora, ejecutar:

timedatectl

salida:

Local time: lun 2022-05-23 08:45:08 -03 
Universal time: lun 2022-05-23 11:45:08 UTC 
RTC time: lun 2022-05-23 11:45:08 
Time zone: America/Argentina/Buenos_Aires (-03, -0300)
System clock synchronized: yes 
NTP service: n/a 
RTC in local TZ: no

Como se puede ver, mi hora local es ahora 08:45:08, pero la hora del RTC es 11:45:08. La hora del RTC no está en mi zona horaria local y a veces esto puede causar problemas si la hora del RTC es inexacta. La hora del RTC no es fiable.

Para que el sistema lea la hora del RTC en el estándar UTC, ejecutar el siguiente comando.

timedatectl set-local-rtc 0

Para que su sistema lea la hora RTC en la zona horaria local, ejecute este comando

timedatectl set-local-rtc 1

Se recomienda que el sistema lea la hora RTC en el estándar UTC para evitar comportamientos inesperados.

Sincronizar el reloj del sistema con la zona horaria

A veces, el reloj del sistema puede ser incorrecto incluso si establece la zona horaria correcta. Para asegurarnos que el reloj del sistema está sincronizado con la zona horaria local, necesitamos NTP (Network Time Protocol).

El trabajo de NTP es proporcionar la hora exacta en su red y hay muchos servicios que dependen de la hora exacta para funcionar correctamente. NTP sincroniza el reloj en toda la red para que la hora sea lo más precisa posible. Es un protocolo de capa de aplicación y utiliza UDP como protocolo de capa de transporte. Los servidores de hora de la red obtienen la hora de los relojes atómicos.

En systemd es posible habilitar la sincronización NTP usando timedatectl. Primero, instalamos el paquete correspondiente.

sudo apt install systemd-timesyncd

Para habilitar la sincronización NTP ejecutamos:

sudo timedatectl set-ntp true

El comando anterior iniciará y habilitará el servicio systemd-timesyncd. Ahora verificamos el estado.

timedatectl status

Salida:

Local time: lun 2022-05-23 09:42:09 -03 
Universal time: lun 2022-05-23 12:42:09 UTC 
RTC time: lun 2022-05-23 12:42:09 
Time zone: America/Argentina/Buenos_Aires (-03, -0300)
System clock synchronized: yes 
NTP service: active 
RTC in local TZ: no

Podemos ver que el reloj del sistema está sincronizado y que el servicio NTP está activo. Para comprobar el estado de timesyncd:

sudo systemctl status systemd-timesyncd

Salida:

systemctl status systemd-timesyncd
● systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2022-05-23 09:35:09 -03; 8min ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 1429940 (systemd-timesyn)
Status: "Synchronized to time server 91.189.94.4:123 (ntp.ubuntu.com)."
Tasks: 2 (limit: 18964)
Memory: 1.5M
CGroup: /system.slice/systemd-timesyncd.service
└─1429940 /lib/systemd/systemd-timesyncd

Chrony

Si el reloj del sistema no se puede sincronizar con un servidor NTP, también se puede probar chrony, que es una implementación versátil del Protocolo de Tiempo de Red. Ejecutar el siguiente comando para instalarlo. (Nota: Si tu sistema tiene el paquete systemd-timesyncd,  chrony lo eliminará).

  • Debian/Ubuntu: sudo apt install chrony
  • CentOS/RHEL/Fedora: sudo dnf install chrony
  • Arch Linux: sudo pacman -S chrony
  • OpenSUSE: sudo zypper install chrony

After it’s installed, start it with:

sudo systemctl enable --now chrony

Check its status:

sudo systemctl status chrony

Salida

● chrony.service - chrony, an NTP client/server
Loaded: loaded (/lib/systemd/system/chrony.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2022-05-23 09:45:09 -03
Docs: man:chronyd(8)
man:chronyc(1)
man:chrony.conf(5)
Process: 11030 ExecStart=/usr/lib/systemd/scripts/chronyd-starter.sh $DAEMON_OPTS (code=exited, status=0/SUCCESS)
Main PID: 11039 (chronyd)
Tasks: 2 (limit: 3676)
Memory: 1.4M
CPU: 168ms
CGroup: /system.slice/chrony.service
├─11039 /usr/sbin/chronyd -F 1
└─11040 /usr/sbin/chronyd -F 1

May 21 19:35:09 systemd[1]: Starting chrony, an NTP client/server...
May 21 19:35:09 chronyd[11039]: chronyd version 4.2 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +NTS +SECHASH +IPV6 -DEBUG)
May 21 19:35:09 chronyd[11039]: Using right/UTC timezone to obtain leap second data
May 21 19:35:09 chronyd[11039]: Loaded seccomp filter (level 1)
May 21 19:35:09 systemd[1]: Started chrony, an NTP client/server.
May 22 23:41:12 chronyd[11039]: Selected source 38.229.62.9 (0.ubuntu.pool.ntp.org)
May 22 23:41:12 chronyd[11039]: System clock wrong by 2496258.787751 seconds
May 23 09:45:09 chronyd[11039]: System clock was stepped by 2496258.787751 seconds
May 23 09:45:09 chronyd[11039]: System clock TAI offset set to 37 seconds

Como podemos ver, chrony encontró que el reloj del sistema está mal y lo sincroniza automáticamente con el servidor de tiempo de la red (0.ubuntu.pool.ntp.org).

 

How to Configure Time Zone and System Clock in Linux

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *