Einstellen der Zeitzone mit einem automatisierten Skript

20

Ich schreibe Skripte, um das Einrichten neuer Slicehost-Installationen zu automatisieren. In einer perfekten Welt lief das Skript, nachdem ich es gestartet hatte, einfach ohne meine Aufmerksamkeit. Ich habe es mit einer Ausnahme geschafft.

Wie stelle ich die Zeitzone dauerhaft (Überlebens-Neustart) und normal (Anpassen der Standard- und Sommerzeit, also nicht nur das Erzwingen des Datums) ein, ohne dass Eingaben von mir erforderlich sind?

Derzeit benutze ich

 dpkg-reconfigure tzdata

Dies scheint keine Möglichkeit zu haben, Parameter einzugeben. Es erfordert Benutzereingaben.


BEARBEITEN: Ich bearbeite hier, anstatt zu kommentieren, da Kommentare keine Codeblöcke zuzulassen scheinen.

Hier ist der eigentliche Code, mit dem ich gelandet bin, basierend auf Rudedogs Kommentar unten. Mir ist auch aufgefallen, dass die Datei / etc / timezone nicht aktualisiert wird. Ich bin mir nicht sicher, wer das nutzt, aber falls jemand das tut, stelle ich das auch ein.

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

Antworten:

18

Das solltest du mit können

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

Ersetzen Sie die entsprechende Zeitzone im obigen Befehl.

Rudedog
quelle
1
Sie sollten symbolisch darauf hinweisen, dass nicht kopiert wird
Zypher
1
Er benutzt Debian. dpkg-reconfigure tzdatamacht eine Kopie, keinen Symlink. Ich glaube, das liegt daran, dass / usr / share beim Booten möglicherweise nicht gemountet wird.
Rudedog
Im technischen Teil der tzconfig-Manpage für Debian heißt es:> Die Arbeit von tzconfig ist eigentlich ziemlich einfach. Es aktualisiert nur den Link / etc / localtime, um auf die richtige Zeitzone zu verweisen, die in / usr / share / zoneinfo / installiert ist.
brent
1
tzconfig wird von Lenny zugunsten von dpkg-reconfigure tzdata abgelehnt und unternimmt eigentlich nichts. Sie können überprüfen, ob es anstelle von Symlinks kopiert wird, indem Sie dpkg-reconfigure tzdata ausführen und das Ergebnis anzeigen.
Rudedog
3

Unter Ubuntu 12.04 hat das Folgende für mich den Trick getan:

# 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
quelle
1
Diese Methode scheint nicht mehr zu funktionieren. Bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
Peter Gibson
Funktioniert auf Ubuntu 14.04.
SuB
3

Versuche dies:

echo "Europe/London" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
Amadu Bah
quelle
Obwohl der Code geschätzt wird, sollte er immer eine begleitende Erklärung haben. Das muss nicht lange dauern, wird aber erwartet.
Peterh sagt wieder Monica
3
Diese Methode scheint nicht mehr zu funktionieren. Bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
Peter Gibson
2

Aktualisieren Sie den /etc/localtimeSymlink so, dass er auf die richtige Zeitzone in zeigt/usr/share/zoneinfo/

brent
quelle
Beachten Sie, dass, wenn Sie einen Symlink verwenden und /usrauf einer separaten Partition gemountet sind, alles, was startet, bevor es /usrgemountet wird, nicht die richtige Zeitzone hat. Die meisten heutigen Distributionen, einschließlich Debian, kopieren eher als Symlink.
Rudedog
1

Darauf bin ich selbst gestoßen. Hier ist eine vollständige Konfiguration, um dies richtig zu machen (es ist eine Ansammlung von Kommentaren hier und diese Frage ):

#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
quelle
0

tzdataverwendet debconf, um diese Frage zu beantworten. Sie müssen sie also vorab ausfüllen. Es gibt verschiedene Möglichkeiten, dies zu tun. Am einfachsten ist es, die Antwort während der Installation vorab festzulegen . Darüber hinaus können Sie eine Standarddatenbank für die Verwendung von debconf einrichten. Informationen dazu finden Sie auf der debconf(7)Manpage.

TRS-80
quelle
-2

Stellen Sie außerdem sicher, dass ntpd installiert ist und ausgeführt wird.

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