Ustawianie strefy czasowej za pomocą automatycznego skryptu

20

Piszę skrypty, aby zautomatyzować konfigurowanie nowych instalacji slicehost. W idealnym świecie, po uruchomieniu skryptu, po prostu działałby, bez mojej uwagi. Udało mi się, z jednym wyjątkiem.

Jak ustawić strefę czasową na stałe (przetrwanie restartu) i rozsądny (dostosuj czas standardowy i czas letni, żeby nie wymuszać tylko daty) ... sposób, który nie wymaga ode mnie wkładu?

Obecnie używam

 dpkg-reconfigure tzdata

Wydaje się, że nie ma to sposobu na wymuszenie wprowadzenia parametrów. Wymaga wkładu użytkownika.


EDYCJA: Ja tu edytuję, a nie komentuję, ponieważ wydaje się, że komentarze nie pozwalają na bloki kodu.

Oto faktyczny kod, na którym się skończyłem, na podstawie poniższego komentarza Rudedoga. Zauważyłem również, że to nie aktualizuje / etc / timezone. Nie jestem pewien, kto tego używa, ale na wypadek, gdyby ktoś to zrobił, ja też to ustawiam.

TIMEZONE="America/Los_Angeles"      
echo $TIMEZONE > /etc/timezone                     
cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime   # This sets the time
Tomek
źródło

Odpowiedzi:

18

Powinieneś być w stanie to zrobić

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

Zamień odpowiednią strefę czasową w powyższym poleceniu.

Rudedog
źródło
1
powinieneś symbolizować, że nie kopiujesz
Zypher
1
On używa Debiana. dpkg-reconfigure tzdatatworzy kopię, a nie dowiązanie symboliczne. Wydaje mi się, że uzasadnieniem jest to, że / usr / share może nie zostać zamontowany podczas rozruchu.
Rudedog,
Zgodnie z sekcją techniczną strony podręcznika tzconfig dla Debiana:> Praca wykonana przez tzconfig jest właściwie dość prosta. Po prostu aktualizuje link / etc / localtime, aby wskazać prawidłową strefę czasową zainstalowaną w / usr / share / zoneinfo /.
brent,
1
tzconfig jest przestarzałe na Lenny na rzecz dpkg-reconfigure tzdata i tak naprawdę nic nie zrobi. Możesz sprawdzić, czy kopiuje zamiast dowiązań symbolicznych, uruchamiając tzdata dpkg-rekonfiguruj i spójrz na wynik.
Rudedog,
3

W systemie Ubuntu 12.04 lewę wykonałem dla mnie:

# 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
źródło
1
Wydaje się, że ta metoda już nie działa. Bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
Peter Gibson
Działa na Ubuntu 14.04.
SuB
3

Spróbuj tego:

echo "Europe/London" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
Amadu Bah
źródło
Chociaż kod jest doceniany, zawsze powinien zawierać towarzyszące mu wyjaśnienie. To nie musi być długo, ale jest oczekiwane.
peterh - Przywróć Monikę
3
Wydaje się, że ta metoda już nie działa. Bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
Peter Gibson
2

Zaktualizuj /etc/localtimedowiązanie symboliczne, aby wskazywało poprawną strefę czasową w/usr/share/zoneinfo/

brent
źródło
Zauważ, że jeśli użyjesz dowiązania symbolicznego i twój /usrzostanie zamontowany na osobnej partycji, wszystko, co rozpocznie się przed /usrpodłączeniem, nie będzie miało właściwej strefy czasowej. Większość dzisiejszych dystrybucji, w tym Debian, kopiuje raczej niż dowiązanie symboliczne.
Rudedog,
1

Wpadłem na to sam. Oto pełna konfiguracja, jak to zrobić poprawnie (jest to agregacja komentarzy tutaj i tego pytania ):

#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
źródło
0

tzdataużywa debconf, aby odpowiedzieć na to pytanie, więc musisz je wstępnie wypełnić. Można to zrobić na kilka sposobów, najłatwiej jest zachować odpowiedź podczas instalacji . Poza tym możesz ustawić domyślną bazę danych, z której będzie korzystać debconf, zobacz stronę debconf(7)man, jak to zrobić.

TRS-80
źródło
-2

Upewnij się także, że ntpd jest zainstalowany i działa.

yum install ntpd
ntpdate pool.ntp.org
service ntpd start
Iraklis
źródło