Impostazione del fuso orario con uno script automatico


20

Sto scrivendo script per automatizzare la configurazione di nuove installazioni di slicehost. In un mondo perfetto, dopo che ho iniziato la sceneggiatura, sarebbe semplicemente scappata, senza alcuna attenzione da parte mia. Ci sono riuscito, con una sola eccezione.

Come faccio a impostare il fuso orario, in modo permanente (sopravvivere al riavvio) e sano (regolare per l'ora solare e l'ora legale, quindi non solo forzando la data) ... modo che non richiede input da me?

Attualmente sto usando

 dpkg-reconfigure tzdata

Questo non sembra avere alcun modo per forzare i parametri in esso. Richiede input da parte dell'utente.


EDIT: sto modificando qui, piuttosto che commentare, poiché i commenti non sembrano consentire blocchi di codice.

Ecco il codice reale con cui sono finito, basato sul commento di Rudedog di seguito. Ho anche notato che questo non aggiorna / etc / timezone. Non sono sicuro chi lo usi, ma nel caso qualcuno lo faccia, lo sto impostando anch'io.

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

Risposte:


18

Dovresti essere in grado di farlo con

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

Sostituisci il fuso orario appropriato nel comando sopra.


1
dovresti creare un collegamento simbolico che non deve essere copiato
Zypher il

1
Sta usando Debian. dpkg-reconfigure tzdatacrea una copia, non un collegamento simbolico. Credo che la logica sia perché / usr / share potrebbe non essere montato all'avvio.
Rudedog,

Secondo la sezione tecnica della manpage di tzconfig per Debian:> Il lavoro svolto da tzconfig è in realtà piuttosto semplice. Aggiorna semplicemente il collegamento / etc / localtime per puntare al fuso orario corretto installato in / usr / share / zoneinfo /.
brent

1
tzconfig è deprecato su lenny in favore di dpkg-reconfigure tzdata e in realtà non farà nulla. Puoi verificare che si copi invece di symlink eseguendo dpkg-reconfigure tzdata e guarda il risultato.
Rudedog,



2

Aggiorna il /etc/localtimelink simbolico per indicare il fuso orario corretto in/usr/share/zoneinfo/


Nota che se usi un link simbolico e il tuo /usrè montato su una partizione separata, tutto ciò che inizia prima del /usrmontaggio non avrà il fuso orario corretto. La maggior parte delle distro oggi, incluso Debian, copia piuttosto che symlink.
Rudedog,

1

Mi sono imbattuto in questo me stesso. Ecco una configurazione completa per come fare questo nel modo giusto (è un insieme di commenti qui e questa domanda ):

#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 debconf per rispondere a questa domanda, quindi è necessario prepopolarla. Esistono diversi modi per farlo, il più semplice è preconfigurare la risposta durante l'installazione . Oltre a ciò è possibile impostare un database predefinito da utilizzare per debconf, vedere la debconf(7)pagina man per come farlo.


-2

Assicurati anche che ntpd sia installato e in esecuzione.

yum install ntpd
ntpdate pool.ntp.org
service ntpd start
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.