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

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.


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,



2

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


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

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ć.


-2

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

yum install ntpd
ntpdate pool.ntp.org
service ntpd start
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.