Definindo o fuso horário com um script automatizado


20

Estou escrevendo scripts para automatizar a configuração de novas instalações de fatiahost. Em um mundo perfeito, depois que eu iniciei o script, ele seria executado, sem a minha atenção. Eu consegui, com uma exceção.

Como faço para definir o fuso horário de forma permanente (sobreviver a reinicialização) e sã (ajustar para o horário padrão e horário de verão, para não forçar apenas a data) ... de maneira que não exija minha contribuição?

Atualmente estou usando

 dpkg-reconfigure tzdata

Isso não parece ter nenhuma maneira de forçar parâmetros nele. Exige entrada do usuário.


EDIT: Estou editando aqui, em vez de comentar, pois os comentários parecem não permitir blocos de código.

Aqui está o código real com o qual acabei, com base no comentário de Rudedog abaixo. Notei também que isso não atualiza o / etc / fuso horário. Não tenho certeza de quem usa isso, mas, no caso de alguém usar, também estou definindo isso.

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

Respostas:


18

Você deve conseguir fazer isso com

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

Substitua o fuso horário apropriado no comando acima.


1
você deve ser um link simbólico que não copiando
Zypher

1
Ele está usando o Debian. dpkg-reconfigure tzdatafaz uma cópia, não um link simbólico. Eu acredito que a lógica é porque / usr / share pode não ser montado no momento da inicialização.
Rudedog

De acordo com a seção técnica da página de manual tzconfig do Debian:> O trabalho realizado pelo tzconfig é realmente bastante simples. Ele apenas atualiza o link / etc / localtime para apontar para o fuso horário correto instalado em / usr / share / zoneinfo /.
brent

1
O tzconfig está obsoleto no lenny em favor do dpkg-reconfigure tzdata e na verdade não fará nada. Você pode verificar se ele copia em vez de links simbólicos executando o dpkg-reconfigure tzdata e observe o resultado.
Rudedog



2

Atualize o /etc/localtimelink simbólico para apontar para corrigir o fuso horário no/usr/share/zoneinfo/


Observe que, se você usar um link simbólico e o seu /usrestiver montado em uma partição separada, qualquer coisa iniciada antes da /usrmontagem não terá o fuso horário correto. A maioria das distros hoje, incluindo o Debian, copia em vez de link simbólico.
Rudedog

1

Eu me deparei com isso. Aqui está uma configuração completa de como fazer isso corretamente (é um agregado de comentários aqui e esta pergunta ):

#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

0

tzdatausa o debconf para responder a essa pergunta, então você precisa preenchê-la previamente. Existem várias maneiras de fazer isso, o mais fácil é apresentar a resposta durante a instalação . Além disso, você pode configurar um banco de dados padrão para o debconf usar, consulte a página de debconf(7)manual de como fazer isso.


-2

Verifique também se o ntpd está instalado e em execução.

yum install ntpd
ntpdate pool.ntp.org
service ntpd start
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.