Cómo cambiar la configuración de zona horaria desde la línea de comando

221

Tengo una máquina virtual configurada en PST que tienen un par de colegas en diferentes zonas horarias.

Si quisiera cambiar la zona horaria a EST y GMT , ¿qué debo hacer?

manyxcxi
fuente

Respuestas:

288

Utilizar timedatectl

sudo timedatectl set-timezone <timeszone>

Ejemplos:

  • Zona horaria como EST

    sudo timedatectl set-timezone EST
    
  • Zona horaria como UTC

    sudo timedatectl set-timezone UTC
    
  • Listado de todas las zonas horarias válidas

    timedatectl list-timezones
    

Este comando es perfecto para los scripts de automatización, ya que no requiere ninguna interacción del usuario en comparación con la otra respuesta dada basada en dpkg-reconfigure tzdata.

Jossef Harush
fuente
1
No soy fanático de los comentarios +1, pero estoy poniendo uno aquí ya que esto funcionó para mí de la mejor manera. Quería una única herramienta de línea de comando de una línea para cambiar la zona horaria, en lugar de querer lanzar un menú completo o un programa GUI (no sé qué tzdatahace, cómo funciona, pero no necesito hacerlo con esto comando de una línea). ¡Gracias!
Phil Ryan
funciona como un encanto;)
user332660
Curiosamente, está haciendo algo un poco diferente a tzdata. Tuve un problema con el tiempo de Java que era diferente al tiempo del sistema después de aplicar un parche. Tzdata no funcionó para solucionar el problema, pero esto sí.
Daniel Bower
1
esto no funcionó para mí; Sin embargo, dpkg-reconfigurehicieron el truco.
Antti Haapala
14.04.4 servidor ubuntu
Antti Haapala
40

Como root tienes que ejecutar:

dpkg-reconfigure tzdata

Se debe iniciar una herramienta basada en menús que le permita cambiar la zona horaria.

maxschlepzig
fuente
32

Lo siguiente también funciona. Para GMT:

ln -sf /usr/share/zoneinfo/GMT /etc/localtime

Para EST:

ln -sf /usr/share/zoneinfo/EST /etc/localtime
pm_labs
fuente
8
Creo que sería mejor vincular uno de los archivos de la ciudad en lugar de GMT o EST, ya que así realizarán un seguimiento del horario de verano, mientras que vincular (p. Ej.) GMT no cambiará la hora del sistema para reflejar cuándo está vigente el horario de verano en tu ciudad. Por ejemplo:ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime
Asfand Qazi
este es el mejor
Hasan Tıngır
16

La forma más fácil, especialmente para un servidor, es enumerar zonas horarias:

timedatectl list-timezones

Y elige el tuyo, por ejemplo:

timedatectl set-timezone Europe/Athens

¡Eso es! , :-)

Dimitrios
fuente
6

Para ejecutar un programa con una configuración de zona horaria diferente, configure la TZvariable de entorno, por ejemplo, ejecutar TZ=Pacific/Kiritimati datepara ver qué hora es en Christmas Island, o export TZ=Pacific/Kiritimatipara que la configuración dure para una sesión de shell.

Gilles
fuente
6

Edite el timezonearchivo en la /etccarpeta como:

Etc/GMT

Puedes usar el siguiente formato:

Region "/" City 

Ejemplo de /etc/timezone:

Europe/Athens

o

Europe/Paris
Europe/London

Puede experimentar con: dpkg-reconfigure tzdata y comprobar cat el archivo de zona horaria.

Debe reiniciar o volver a iniciar un servicio (no el servicio ntp). No se cual. Si alguien sabe por favor comparta con nosotros. (Probado en Ubuntu 15.10, el cambio se tiene en cuenta al instante)

chasapis.christos
fuente
4
cp -p /usr/share/zoneinfo/US/Pacific /etc/localtime

Recomiendo EN CONTRA los enlaces como los mencionados por otros. Si algún script /etc/localtimesobrescribe accidentalmente su archivo, entonces sobrescribe su archivo de zona horaria del Pacífico ... y es un poco difícil reemplazarlo.

Simplemente copie el archivo Pacific sobre el archivo localtime con el comando anterior.

J Roysdon
fuente
Esto realmente funcionó para mí. Creo que hay algún error con Docker, ansible (?). Tanto timedatectl como dpkg-reconfigure tzdata fallaron para mí. Después de copiar, la zona horaria cambió de EST a PDT.
Dom
2

Utilizo el siguiente script para preguntarle al usuario qué zona horaria establecer y luego confirmar que efectivamente se ha configurado:

#!/bin/sh
sudo timedatectl set-timezone $(tzselect)
echo
echo timedatectl says:
timedatectl

Yo lo llamo tz-set.

Tom Hale
fuente
0

Como root tienes que ejecutar:

ln -fs /usr/share/zoneinfo/Europe/Warsaw /etc/localtime && dpkg-reconfigure --frontend noninteractive tzdata

Stefan Sebastian
fuente
Explique al menos cómo funciona este comando para cambiar la zona horaria.
Parto
0

Esto funcionó para mí en GCP Ubuntu 14 a través de SSH

  1. sudo su
  2. cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
  3. Reiniciar el servidor
  4. Hecho
Vignesh Chinnaiyan
fuente