A menudo es necesario instalar o configurar servidores y nos topamos que no tienen una zona horaria configurada correctamente y la hora (y en algunos momentos el día) que reportan es incorrecta. Para solucionar esto es necesario cambiar la zona horaria en Ubuntu server desde la terminal.
Como Cambiar la Zona Horaria en Ubuntu desde la CLI
Primero necesitas algunos datos como es la configuración actual y la ubicación o la zona horaria que quieres configurar. Para encontrar esta información puedes usar los comandos que te comparto en seguida.
Cómo saber la configuración actual de la zona horaria? bueno, desde la terminal, la linea de comandos o CLI, como lo quieras llamar, en Ubuntu server puedes utilizar el comando timedatectl y te mostrará la fecha y hora configurada así como la zona horaria, la fecha y hora local y la UTC. Aquí te muestro un ejemplo:
$ timedatectl
Local time: Fri 2019-02-22 18:43:25 UTC
Universal time: Fri 2019-02-22 18:43:25 UTC
RTC time: Fri 2019-02-22 18:43:25
Time zone: UTC (UTC, +0000)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
Como te puedes dar cuenta este servidor no tiene una zona horaria, esta en UTC. Esto es un problema por que algunos sistemas reportan eventos en la hora actual del sistema y reportan a las 18:43 hrs cuando en México (mi zona horaria) son las 12:43 hrs. Bueno, te has de imaginar el problema.
Para configurar la zona horaria necesitas saber cual zona horaria aplicar y esto es una cadena de texto que puedes conocer con el comando «timedatectl list-timezones». Este comando te muestra todas la configuraciones posibles para una zona horaria, en mi caso configuro la hora de la Ciudad de México (UTC-6) y se puede ver en el listado como America/Mexico_city y tu puedes encontrar la tuya buscando alguna de las ciudades mas importantes de tu país y están agrupadas por continente. Aquí un ejemplo:
America/La_Paz
America/Lima
America/Los_Angeles
America/Lower_Princes
America/Maceio
America/Managua
America/Manaus
America/Marigot
America/Martinique
America/Matamoros
America/Mazatlan
America/Menominee
America/Merida
America/Metlakatla
America/Mexico_City <--- Esta es la que selecciono
America/Miquelon
America/Moncton
America/Monterrey
America/Montevideo
America/Montserrat
America/Nassau
America/New_York
lines 82-153
Cuando sabes cual es la cadena adecuada para seleccionar la zona horaria entonces utilizar el comando «sudo timedatectl set-timezone» seguido de la cadena que hayas seleccionado del listado que muestra el comando anterior. En mi caso es «America/Mexico_City» asi que para configurar mi zona horaria uso el comando siguiente:
sudo timedatectl set-timezone America/Mexico_City
Una vez ejecutado ahora puedo verificar el cambio con el mismo comando que iniciamos.
$ timedatectl Local time: Fri 2019-02-22 12:54:25 CST Universal time: Fri 2019-02-22 18:54:25 UTC RTC time: Fri 2019-02-22 18:54:25
Time zone: America/Mexico_City (CST, -0600) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: no
Como puedes ver ya se refleja el cambio y al ejecutar comando para mostrar la hora o al registrar algo en alguna aplicación, la hora reportada de será la local. Por ejemplo a ejecutar el comando date ahora nos devuelve la hora correcta:
$ date Fri Feb 22 12:55:25 CST 2019
Este es uno de los cambios que deberías realizar en casi cualquier servidor que instales pues es uno de los temas que causa mas problemas a la larga cuando se comienzas a usar aplicaciones o sistemas.