Establecer la zona horaria con un script automatizado

20

Estoy escribiendo scripts para automatizar la configuración de nuevas instalaciones de servidor de corte. En un mundo perfecto, después de que comencé el guión, simplemente se ejecutaba, sin mi atención. He tenido éxito, con una excepción.

¿Cómo configuro la zona horaria, de forma permanente (reinicio de supervivencia) y sana (ajuste el horario estándar y el horario de verano, así que no solo forzar la fecha) ... de manera que no requiera mi opinión?

Actualmente estoy usando

 dpkg-reconfigure tzdata

Esto no parece tener ninguna forma de forzar parámetros en él. Exige la entrada del usuario.


EDITAR: estoy editando aquí, en lugar de comentar, ya que los comentarios no parecen permitir bloques de código.

Aquí está el código real con el que terminé, basado en el comentario de Rudedog a continuación. También noté que esto no actualiza / etc / timezone. No estoy seguro de quién lo usa, pero en caso de que alguien lo haga, también lo estoy configurando.

TIMEZONE="America/Los_Angeles"      
echo $TIMEZONE > /etc/timezone                     
cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime   # This sets the time
Tom
fuente

Respuestas:

18

Deberías poder hacer esto con

cp /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

Sustituya la zona horaria apropiada en el comando anterior.

Perro rudo
fuente
1
deberías estar simpatizando que no copiar más
Zypher
1
Él está usando Debian. dpkg-reconfigure tzdatahace una copia, no un enlace simbólico. Creo que la razón es que / usr / share podría no estar montado en el momento del arranque.
Rudedog
Según la sección técnica de la página de manual de tzconfig para Debian:> El trabajo realizado por tzconfig es en realidad bastante simple. Simplemente actualiza el enlace / etc / localtime para apuntar a la zona horaria correcta instalada en / usr / share / zoneinfo /.
brent
1
tzconfig está en desuso en lenny a favor de dpkg-reconfigure tzdata y en realidad no hará nada. Puede verificar que se copia en lugar de enlaces simbólicos ejecutando dpkg-reconfigure tzdata y ver el resultado.
Rudedog
3

En Ubuntu 12.04 lo siguiente hizo el truco para mí:

# http://manpages.ubuntu.com/manpages/precise/man7/debconf.7.html
export DEBCONF_NONINTERACTIVE_SEEN=true DEBIAN_FRONTEND=noninteractive
echo "Europe/Berlin" > /etc/timezone
dpkg-reconfigure tzdata
Schlomo
fuente
1
Parece que este método ya no funciona bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
Peter Gibson
Funciona en Ubuntu 14.04.
SuB
3

Prueba esto:

echo "Europe/London" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
Amadu Bah
fuente
Aunque se aprecia el código, siempre debe tener una explicación que lo acompañe. Esto no tiene que ser largo, pero se espera.
peterh - Restablece a Monica el
3
Este método ya no parece funcionar bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
Peter Gibson
2

Actualizar /etc/localtimeenlace simbólico para apuntar a la zona horaria correcta en/usr/share/zoneinfo/

brent
fuente
Tenga en cuenta que si usa un enlace simbólico y su /usrestá montado en una partición separada, cualquier cosa que comience antes de /usrmontarse no tendrá la zona horaria correcta. La mayoría de las distribuciones actuales, incluida Debian, copian en lugar de enlace simbólico.
Rudedog
1

Me encontré con esto yo mismo. Aquí hay una configuración completa de cómo hacer esto correctamente (es un conjunto de comentarios aquí y esta pregunta ):

#Set time zone and time
echo "tzdata tzdata/Areas select Europe" | debconf-set-selections
echo "tzdata tzdata/Zones/Europe select London" | debconf-set-selections
TIMEZONE="Europe/London"
echo $TIMEZONE > /etc/timezone
cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime
/usr/sbin/ntpdate pool.ntp.org
Synchro
fuente
0

tzdatausa debconf para responder esa pregunta, por lo que debe rellenarla previamente. Hay varias formas de hacer esto, la más fácil es preseleccionar la respuesta durante la instalación . Más allá de eso, puede configurar una base de datos predeterminada para que debconf la use, consulte la página de debconf(7)manual para saber cómo hacerlo.

TRS-80
fuente
-2

También asegúrese de que ntpd esté instalado y ejecutándose.

yum install ntpd
ntpdate pool.ntp.org
service ntpd start
Iraklis
fuente