Configuración de zona horaria en Linux [cerrado]


157

Estoy configurando la zona horaria a GMT + 6 en mi máquina Linux copiando el archivo zoneinfo en /etc/localtime, pero el datecomando todavía muestra la hora como UTCtime-6. ¿Alguien puede explicarme este comportamiento?

Supongo que el datecomando debería mostrar la UTCtime+6hora. Aquí hay pasos que estoy siguiendo:

date
Wed Jan 22 17:29:01 IST 2014

date -u
Wed Jan 22 11:59:01 UTC 2014

cp /usr/share/zoneinfo/Etc/GMT+6 /etc/localtime

date
Wed Jan 22 05:59:21 GMT+6 2014

date -u
Wed Jan 22 11:59:01 UTC 2014

¿Se ha establecido la variable de entorno TZ ( echo $TZproduce algo más que una línea vacía)? También podría ser una mejor idea crear un enlace simbólico en /etc/localtimelugar de copiar el archivo real (de esa manera estará seguro, en caso de que los datos de zoneinfo cambien, lo que probablemente nunca lo hará).
Sami Laine el

¿Cuál es la distribución? ¡Diferentes distribuciones manejan esto de manera diferente!
slm

@slm: estoy usando ubuntu 12.04
Rahul Dhobi el

Es probable que no conozca esta política, pero no debe publicar las mismas Q en los diferentes sitios de SE. stackoverflow.com/questions/21282367/timezone-setting-in-linux
slm

2
"Esta pregunta ha sido publicada en múltiples sitios" Huh, esa es una nueva para mí. Nunca encontré un sitio de SE con una razón tan cercana como esa. De todos modos, esta es la primera pregunta que surge en Google cuando se busca cómo cambiar una zona horaria en Linux, y es la pregunta más votada de todas las que he visto, así que ¿tal vez debería reabrirse?
Ajedi32

Respuestas:


273

Eche un vistazo a esta publicación del blog titulada: Cómo: 2 métodos para cambiar TimeZone en Linux .

Distros de Red Hat

Si está utilizando una distribución como Red Hat, entonces su enfoque de copiar el archivo sería más que aceptable.

NOTA: Si está buscando una solución de distribución independiente, esto también funciona en Debian, aunque a continuación hay enfoques más simples si solo necesita preocuparse por las máquinas Debian.

$ ls /usr/share/zoneinfo/
Africa/      CET          Etc/         Hongkong     Kwajalein    Pacific/     ROK          zone.tab
America/     Chile/       Europe/      HST          Libya        Poland       Singapore    Zulu
Antarctica/  CST6CDT      GB           Iceland      MET          Portugal     Turkey       
Arctic/      Cuba         GB-Eire      Indian/      Mexico/      posix/       UCT          
Asia/        EET          GMT          Iran         MST          posixrules   Universal    
Atlantic/    Egypt        GMT0         iso3166.tab  MST7MDT      PRC          US/          
Australia/   Eire         GMT-0        Israel       Navajo       PST8PDT      UTC          
Brazil/      EST          GMT+0        Jamaica      NZ           right/       WET          
Canada/      EST5EDT      Greenwich    Japan        NZ-CHAT      ROC          W-SU         

Sin embargo, recomendaría vincularlo en lugar de copiar.

$ sudo unlink /etc/localtime 
$ sudo ln -s /usr/share/zoneinfo/Etc/GMT+6 /etc/localtime

Ahora la fecha muestra la zona horaria diferente:

$ date -u
Thu Jan 23 05:40:31 UTC 2014

$ date 
Wed Jan 22 23:40:38 GMT+6 2014

Distros de Ubuntu / Debian

Para cambiar la zona horaria en cualquiera de estas distribuciones, puede usar este comando:

$ sudo dpkg-reconfigure tzdata

    ss # 1

$ sudo dpkg-reconfigure tzdata

Current default time zone: 'Etc/GMT-6'
Local time is now:      Thu Jan 23 11:52:16 GMT-6 2014.
Universal Time is now:  Thu Jan 23 05:52:16 UTC 2014.

Ahora cuando lo revisamos:

$ date -u
Thu Jan 23 05:53:32 UTC 2014

$ date 
Thu Jan 23 11:53:33 GMT-6 2014

NOTA: También existe esta opción en Ubuntu 14.04 y versiones posteriores con un solo comando (fuente: Preguntar a Ubuntu: configurar la zona horaria desde la terminal ):

$ sudo timedatectl set-timezone Etc/GMT-6

Sobre el uso de "Etc / GMT + 6"

extracto de la respuesta de @ MattJohnson en SO

Zonas como Etc/GMT+6se invierten intencionalmente para la compatibilidad con los estándares POSIX. Ver los comentarios en este archivo .

Casi nunca debería necesitar usar estas zonas. En su lugar, debe utilizar una zona horaria totalmente nombrado como America/New_Yorko Europe/London, o lo que sea apropiado para su ubicación. Consulte la lista aquí .


1

@ user3184706: has hecho un desastre aquí. Su Q aquí fue cómo cambiar la zona horaria, a lo que respondí. La parte sobre el uso de GMT ... zona horaria o no es que el SO A proporcionado es exacto, pero omití incluir eso aquí, ya que realmente no estaba preguntando sobre eso, aunque pensé. Puedo agregar ese bit a esta A o puedes copiar / pegar esa información aquí como tu propia A.
slm

@ user3184706 - para tratar de limpiar esto, incluí Matt's A en la mía para completarlo.
slm

1
Tenga en cuenta que si está en un contenedor, con Ubuntu debe instalar el paquete tzdatao de lo contrario los archivos /usr/share/zoneinfono existirán.
Elliott Slaughter

1
timedatectlfunciona para SLES 12 también.
Alexander Malakhov

24

Así es como lo hago en Ubuntu. Simplemente reemplace Asia/Tokyocon su propia zona horaria.

echo 'Asia/Tokyo' | sudo tee /etc/timezone

sudo dpkg-reconfigure -f noninteractive tzdata

Hay un error en tzdata: ciertos valores se normalizan mediante dpkg-reconfigure:

echo 'US/Central' >/etc/timezone
dpkg-reconfigure -f noninteractive tzdata
# Current default time zone: 'America/Chicago'

echo 'US/Eastern' >/etc/timezone
apt-get install --reinstall tzdata
# Current default time zone: 'America/New_York'

Esto también funciona, pero en Debian / Ubuntu, la respuesta de slm es probablemente más fácil y menos riesgosa (sin posibilidad de errores tipográficos)
Andreas Hartmann

17

El comando tzselect está hecho para hacer lo que quieras.


1
Y condensar eso en una sola línea que establece la TZvariable en su zona horaria local, por ejemplo, para América / Los_Angeles export TZ=`printf "2\n49\n21\n1\n" | tzselect 2>&1 | tail -1` . Puede poner esta línea en su .profile , as tzselect` sugiere, si la ejecuta en el indicador.
Sameers
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.