Frage Einstellen der Zeitzone mit einem automatisierten Skript


Ich schreibe Skripte, um das Einrichten neuer slicehost-Installationen zu automatisieren. In einer perfekten Welt würde es, nachdem ich das Drehbuch begonnen hatte, einfach ohne Aufmerksamkeit von mir laufen. Es ist mir gelungen, mit einer Ausnahme.

Wie stelle ich die Zeitzone ein, in einem permanenten (überleben Neustart) und gesund (anpassen für Standard-und Sommerzeit, so nicht nur das Datum erzwingen) ... Art und Weise, die keine Eingabe von mir erfordert?

Momentan verwende ich

 dpkg-reconfigure tzdata

Dies scheint keine Möglichkeit zu haben, Parameter in sie zu zwingen. Es fordert Benutzereingaben.


EDIT: Ich bearbeite hier, anstatt zu kommentieren, da Kommentare keine Code-Blöcke zulassen.

Hier ist der Code, mit dem ich am Ende gekommen bin, basierend auf Rudedogs Kommentar unten. Ich habe auch bemerkt, dass dies / etc / timezone nicht aktualisiert. Ich bin mir nicht sicher, wer das benutzt, aber falls irgendjemand das tut, setze ich das auch fest.

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

18
2017-12-16 15:57


Ursprung




Antworten:


Du solltest das mit machen können

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

Ersetzen Sie die entsprechende Zeitzone im obigen Befehl.


17
2017-12-16 16:11



Sie sollten symbolisch sein, dass nicht kopiert wird - Zypher
Er benutzt Debian. dpkg-reconfigure tzdata erstellt eine Kopie, keinen Symlink. Ich glaube, das Grundprinzip ist, weil / usr / share beim Booten nicht gemountet werden kann. - Rudedog
Laut dem technischen Teil der tzconfig-Manpage für Debian:> Die Arbeit von tzconfig ist eigentlich ziemlich einfach. Es aktualisiert nur den Link / etc / localtime, um auf die korrekte Zeitzone zu verweisen, die in / usr / share / zoneinfo / installiert ist. - brent
tzconfig ist auf Lenny zugunsten von dpkg-reconfigure tzdata veraltet und wird eigentlich nichts tun. Sie können überprüfen, dass es anstelle von Symlinks kopiert, indem Sie dpkg-reconfigure tzdata ausführen und sich das Ergebnis ansehen. - Rudedog


Unter Ubuntu 12.04 hat das folgende für mich gemacht:

# 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

3
2018-03-19 17:11



Diese Methode scheint nicht mehr zu funktionieren bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806 - Peter Gibson
Funktioniert auf Ubuntu 14.04. - SuB


Versuche dies:

echo "Europe/London" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata

3
2018-04-28 06:47



Obwohl der Code geschätzt wird, sollte er immer eine begleitende Erklärung enthalten. Dies muss nicht lange dauern, aber es wird erwartet. - peterh
Diese Methode scheint nicht mehr zu funktionieren bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806 - Peter Gibson


Aktualisieren /etc/localtime Symlink zeigt auf die Zeitzone in /usr/share/zoneinfo/


2
2017-12-16 16:11



Beachten Sie, dass wenn Sie einen Symlink und Ihre verwenden /usr ist auf einer separaten Partition montiert, alles, was davor beginnt /usr mounted bekommt nicht die richtige Zeitzone. Die meisten Distributionen, einschließlich Debian, kopieren statt Symlink. - Rudedog


Bin selbst in das geraten. Hier ist eine komplette Konfiguration, wie man das richtig macht (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

1
2017-07-01 08:43





tzdata verwendet debconf, um diese Frage zu beantworten, also müssen Sie sie vorher auffüllen. Es gibt mehrere Möglichkeiten, dies zu tun, am einfachsten ist es preseed die Antwort während der Installation. Darüber hinaus können Sie eine Standarddatenbank für Debconf einrichten, siehe debconf(7) Manpage für wie das geht.


0
2017-12-16 16:19





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

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

-2
2018-03-25 10:14