Idioma
Categoría
Buscar

Establecer fecha, hora y zona horaria en Linux mediante terminal

Descubra cómo ajustar el reloj y la zona horaria en Linux y hardware (BIOS/UEFI). Sincronice con servidores NTP y asegúrese de que el reloj de su sistema esté siempre actualizado y preciso

Establecer fecha, hora y zona horaria en Linux mediante terminal
En Terminal Por Rudi Drusian Lange
Publicado el
Última actualización

Entorno de configuración

Este artículo fue elaborado utilizando la distribución Slackware en su versión 15.0. Muchas distribuciones modernas de Linux emplean el comando timedatectl para configuraciones de fecha, hora y zona horaria; sin embargo, este comando no será abordado en este documento. Slackware utiliza comandos más tradicionales, que deberían funcionar correctamente en la mayoría de las distribuciones Linux actuales.

Introducción

La zona horaria de Linux se define a través del archivo /etc/localtime, pero es posible configurarla tanto globalmente como para un usuario específico utilizando la variable de entorno TZ. Para usuarios individuales, puede definirse en el archivo ~/.bashrc, mientras que para todo el sistema, puede configurarse en /etc/profile o, en algunas distribuciones, en /etc/environment.

El comando date se utiliza para mostrar o configurar manualmente la fecha y hora en Linux, mientras que el comando ntpdate utiliza el protocolo NTP para realizar una sincronización puntual del horario con otros ordenadores en la red a través del puerto 123/UDP. Por otro lado, el daemon ntpd se encarga de mantener la sincronización continua del reloj del sistema con servidores NTP.

UTC vs Localtime

UTC es el estándar de hora global, no considera zonas horarias ni horario de verano, y la misma hora UTC se utiliza en cualquier lugar del mundo. Localtime es la zona horaria específica de la ubicación donde se está configurando el sistema.

Zona horaria

La zona horaria en Linux se define utilizando la base de datos de zonas horarias proporcionada y mantenida por IANA. En Slackware, el paquete que contiene esta lista es glibc-zoneinfo, y la información de las zonas se organiza en el directorio /usr/share/zoneinfo/ por regiones (como "America", "Europe", "Asia").

$ bash

ls /usr/share/zoneinfo/

Dentro de las carpetas de regiones están los archivos de zona con el nombre de ciudades (como "Sao_Paulo", "Buenos_Aires", "Los_Angeles"). Para visualizar una zona horaria específica, utilice el comando:

$ bash

zdump /usr/share/zoneinfo/America/Los_Angeles

Para cambiar la zona horaria:

# bash

ln -sf /usr/share/zoneinfo/America/Buenos_Aires /etc/localtime

Opcionalmente, puede utilizarse el comando timeconfig en Slackware para crear la configuración anterior. Elija la opción "NO" y luego encuentre su localidad en la lista proporcionada. Recuerde utilizar el usuario root.

slackware-timeconfig-01

Pruebe con el comando date para verificar si se ha aplicado la nueva zona horaria. Si el cambio no funciona, puede ser que la zona horaria esté siendo definida por la variable de entorno TZ. Esta variable tiene prioridad, permitiendo definir zonas horarias diferentes por usuario. Para manipular la variable en tiempo de ejecución, utilice:

# bash

# Verificar el valor de TZ
echo $TZ
America/Buenos_Aires

# Eliminar el valor de TZ
unset TZ

# Cambiar el valor de TZ
export TZ=America/Sao_Paulo

Para que el cambio sea permanente, la variable TZ debe configurarse en el archivo ~/.bashrc. Agregue la siguiente línea:

~/.bashrc

export TZ=America/Buenos_Aires

Esta configuración es individual para el usuario. Para recargar el archivo .bashrc con los cambios realizados:

$ bash

. ~/.bashrc

# o
source ~/.bashrc

Para usar la variable a nivel de sistema, puede configurarse en /etc/profile utilizando la misma línea del archivo bashrc. Alternativamente, puede establecerse en /etc/environment, pero en este archivo no debe incluirse el comando export.

/etc/environment

TZ=America/Sao_Paulo

Sincronizando el reloj con un servidor NTP remoto

Para actualizar la hora a través de un servidor en internet, es necesario contar con el paquete ntp, el cual se puede instalar en Slackware utilizando el comando slackpkg.

# bash

# Sincronizando la hora
ntpdate pool.ntp.org
5 May 00:41:05 ntpdate[3132]: step time server 201.49.148.135 offset 6.872209 sec

En la mayoría de los casos, se recomienda utilizar pool.ntp.org para encontrar un servidor NTP (o 0.pool.ntp.org, 1.pool.ntp.org, etc., si necesita múltiples servidores). El sistema intentará seleccionar automáticamente los servidores más cercanos a usted.

Al ejecutar el comando ntpdate, la hora se actualizará en el momento de la ejecución. Para mantener el reloj sincronizado, utilice el servicio ntpd. Primero, edite el archivo de configuración /etc/ntp.conf y descomente las líneas como se muestra a continuación:

/etc/ntp.conf

# Servidores NTP, liste uno o más para sincronización
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst

Luego, otorgue permiso de ejecución al script /etc/rc.d/rc.ntpd e inicie el servicio con los siguientes comandos:

# Shell

# Otorgue permiso de ejecución
chmod +x /etc/rc.d/rc.ntpd

# Inicie el servicio
/etc/rc.d/rc.ntpd start

Para realizar una prueba, cambie manualmente la fecha utilizando el comando date como se demostró anteriormente. Tenga en cuenta que la hora no se corregirá de inmediato; existe un intervalo de verificación predeterminado que varía entre 64 segundos (mínimo) y 1024 segundos (máximo).

Estos valores pueden ajustarse configurando los parámetros maxpoll y minpoll. Para más información, consulte el manual: man ntp.conf.

Después de cambiar la fecha, espere al menos 17 minutos (1024 segundos) para que la hora se corrija automáticamente. Alternativamente, puede reiniciar manualmente el servicio para forzar la corrección inmediata utilizando el siguiente comando:

# Shell

# Reiniciando el servicio
/etc/rc.d/rc.ntpd restart

Reloj del hardware

El reloj del hardware es un dispositivo electrónico que mide el paso del tiempo, también conocido como RTC. Es la hora que se muestra en la BIOS o UEFI de los ordenadores.

Para evitar inconsistencias en sistemas de arranque dual (dual boot) con diferentes instalaciones de Linux en el mismo ordenador, es necesario configurar correctamente el reloj del hardware, definiendo si utiliza la hora local (localtime) o basada en UTC.

Este procedimiento debe realizarse solo una vez para garantizar que la zona horaria esté configurada correctamente. A continuación, se muestra cómo consultar el reloj del hardware y cómo definir la zona horaria:

# Shell

# Consultar la hora del reloj del hardware
hwclock --show

# Shell

# Definir la zona horaria como local
hwclock --systohc --localtime

# o
hwclock -w -l

# Shell

# Definir la hora basada en UTC
hwclock --systohc --utc

# o
hwclock -w -u

Referencias

La fuente principal para este artículo fue el manual (man page) disponible en Slackware Linux.

Este no es mi idioma original y no lo hablo muy bien. Utilicé mis pocos conocimientos y herramientas de traducción para redactar el texto de este artículo. Disculpe los posibles errores ortográficos o gramaticales, se agradecen sugerencias de correcciones y se pueden enviar al correo electrónico de contacto que se encuentra en el pie de página del sitio. Mi intención es compartir algunos conocimientos y espero que esta traducción sea lo suficientemente buena.


Algunos de los contenidos de este sitio web, incluidos textos, imágenes, gráficos y otros materiales, pueden ser generados o mejorados mediante herramientas de inteligencia artificial (IA). Para obtener más detalles sobre nuestro uso de IA, consulte nuestro Término de uso.