Jak ustawić godzinę i datę z Internetu?

35

Jak pobrać datę z Internetu i ustawić zegar komputera z wiersza poleceń?

Mohsen
źródło
3
Nie rozumiem głosów negatywnych. Proste pytania sprawiają, że społeczność jest potężna. Na przykład zobacz to
Mohsen
3
Kiedy zatrzymam kursor myszy nad strzałką w dół pytania, widzę: „To pytanie nie pokazuje żadnego wysiłku badawczego; jest niejasne lub nieprzydatne”. Skłoniłbym cię do oddania głosu na podstawie pierwszego (brak wskazania tego, co znalazłeś), drugiego (brak wskazania na jakiej konkretnej platformie pracujesz i dlaczego musi to być wiersz poleceń (zamiast zwykłego demona czasu) ) i trzeci (większość użytkowników * nix będzie domyślnie miało zainstalowanego demona czasu).
Anthon
+1 Nie rozumiem też głosów negatywnych, po prostu dlatego, że wiele razy mnie to wkurzyło i wydaje się niemożliwe, aby znaleźć coś zwięzłego i użytecznego w tym konkretnym temacie.
l0b0
@Mohsen Nie głosowałem, ale różnica w pytaniu, które podałeś, polega na tym, że nie ma switchrubinu, podczas gdy możesz bezpośrednio ustawić datę za pomocą date -s(jak pokazano na stronie podręcznika) lub użyć dowolnego z poleceń opisanych poniżej ...
Ulrich Dangel
1
@Anthon Nie zgadzam się: to pytanie dotyczy małego urządzenia z BusyBox, co sprawia, że ​​ogólne porady „używaj NTP” niekoniecznie mają zastosowanie
Gilles „SO- przestań być zły”

Odpowiedzi:

29

Możesz użyć :

sudo dpkg-reconfigure tzdata

do konfigurowania strefy czasowej.

Aby zaktualizować godzinę i datę z Internetu, użyj:

zainstalować

Jeśli ntpd nie jest zainstalowany, użyj jednego z następujących poleceń, aby zainstalować ntpd:

  • W przypadku RPM:

    yum install ntp 
    
  • W przypadku Debiana:

    sudo apt-get install ntp
    

Konfiguracja

Powinieneś przynajmniej ustawić następujący parametr w pliku konfiguracyjnym /etc/ntp.conf: server

Na przykład otwórz plik /etc/ntp.conf za pomocą edytora tekstu vi:

  # vi /etc/ntp.conf

Znajdź parametr serwera i ustaw go w następujący sposób:

  server pool.ntp.org

Zapisz plik i uruchom ponownie usługę ntpd:

  # /etc/init.d/ntpd start

Możesz natychmiast zsynchronizować zegar systemowy z serwerem NTP za pomocą następującego polecenia:

  # ntpdate pool.ntp.org

* Aby ręcznie ustawić datę i godzinę, użyj następującej składni:

 date --set="STRING"

Na przykład ustaw nowe dane na 2 października 2006 18:00:00, wpisz następujące polecenie jako użytkownik root:

# date -s "2 OCT 2006 18:00:00"

LUB

# date --set="2 OCT 2006 18:00:00"

Możesz także uprościć format, używając następującej składni:

# date +%Y%m%d -s "20081128"

Aby ustawić czas, użyj następującej składni:

# date +%T -s "10:13:13"

Gdzie,

10: godzina (hh) 13: minuta (mm) 13: sekunda (ss)

Użyj równoważnika lokalizacji% p dla AM lub PM, wprowadź:

# date +%T%p -s "6:10:30AM"

# date +%T%p -s "12:10:30PM"
tusharmakkar08
źródło
Mimo że informacje o dacie wydają się prawidłowe, nie uwzględniają nigdzie wymogu from the internetz tytułu PO.
Anthon
Uważam, że pakiet tzdata (dane strefy czasowej) synchronizuje dane tylko z Internetu. Popraw mnie, jeśli się mylę .
tusharmakkar08
3
tzdata to informacje o strefach czasowych i czasie letnim (początek, koniec, epoka), a nie faktyczna data i godzina. Oczywiście przydaje się wiedzieć, jak dostać się do czasu lokalnego w oparciu o znajomość strefy czasowej i czasu UTC, ale nadal musisz odzyskać ten czas z Internetu.
Anthon
Mylisz się. dane strefy czasowej muszą być aktualizowane (ponieważ cały czas zachodzą zmiany) ALE nie aktualizuje się automatycznie z Internetu NOR nie ustawia czasu z Internetu.
Ulrich Dangel
@Anthon: Odpowiednio zredagowałem swoją odpowiedź. Dziękuję.
tusharmakkar08
23

Znalazłem mały kod, aby zaktualizować Twój czas na wypadek, gdybyś nie chciał niczego instalować tylko po to, aby zaktualizować datę. :)

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
Prashant Kabade
źródło
1
Używam, google.inaby uzyskać bieżący czas dla mojej strefy czasowej (INDIE).
Dilawar
Zwróć uwagę na znak końcowy, Zktóry wskazuje, że czas jest podawany w strefie czasowej zulu, więc nie należy wymagać specjalnej manipulacji strefą czasową, jeśli strefa czasowa komputera jest ustawiona poprawnie.
user202729,
9

Używam tego:

sudo ntpd -qg; sudo hwclock -w

najpierw powiedz ntpd, aby po prostu ustawił czas, a potem zatrzymaj za pomocą -q. Ponadto, jeśli twój zegar ma duży błąd, musimy powiedzieć ntpd, aby w tym przypadku również wyregulował za pomocą -g. Na koniec zapisz zegar na sprzęcie, aby zachować zmiany po ponownym uruchomieniu za pomocą hwclock -w (-w do ustawiania zegara sprzętowego na bieżący czas systemowy, jest różnica).

Silverrocker
źródło
1
mam tendencję do robienia tego za pomocą „&&” zamiast średnika, więc jeśli pierwsze polecenie się nie powiedzie (np. brak połączenia z siecią), drugie polecenie jest zwarte
Theophrastus
7

Użyj ntpdate, ntpd lub Chrony, aby połączyć się z serwerem NTP.

Ignacio Vazquez-Abrams
źródło
5

Niektóre dystrybucje wysyłają w tym celu datownik . Podstawowe użycie:

# just query
bash-4.2$ rdate pool.ntp.org
rdate: [pool.ntp.org]   Wed Jun 12 11:05:40 2013

# set system time
bash-4.2$ rdate -s pool.ntp.org
człowiek w pracy
źródło
O wiele lepsze i łatwiejsze niż ntp
andrewtweber
pool.ntp.orgteraz odrzuca połączenia z rdate. time.nist.govPrace. Również po ustawieniu czasu systemowego należy również ustawić zegar sprzętowy, uruchamiając go, hwclock -waby ustawić czas systemowy. Następnie możesz sprawdzić, czy jest poprawny, uruchamiająchwclock -r
MatthewLee,
5

Po kilku badaniach skończyłem z tym. Zastosowałem go również na własnym serwerze:

sudo apt-get install ntp
sudo dpkg-reconfigure ntp
ntpq -p

Jeśli ostatnie polecenie pokazuje prawidłową listę serwerów, możesz zacząć. Polecenie uruchomi dość złożony zestaw algorytmów, które między innymi będą iterować dryf zegara i zrekompensują je. Otrzymasz dość dokładny zegar, nawet jeśli stracisz połączenie z serwerami NTP. Jednak uruchomienie polecenia wymaga kilku minut.

Źródło: tu i tutaj .

Tubbles
źródło
0

Aby znaleźć „peerów” (hosty, do których możesz wysłać zapytanie), możesz użyć ntpq -p.

Jeśli masz już uruchomioną usługę NTP, musisz ją zatrzymać przed ręczną aktualizacją, na przykład za pomocą sudo service ntp stop.

Teraz możesz wysłać zapytanie do peera, na przykład używając sudo ntpdate "peer".

10b0
źródło
0

Używanie narzędzia rdate zgodnie z sugestią zawartą w odpowiedzi manatwork , ale z protokołem SNTP -ni -4opcjami IPv4 na:

# just print synced time, not set
rdate -n -4 -p time-a.nist.gov

# print and set synced time
sudo rdate -n -4 time-a.nist.gov

Narzędzie można zainstalować na Debianie w ten sposób:

sudo apt-get install rdate
Sierżant
źródło
0

Oprócz odpowiedzi Tushara musiałem również zrobić apt-get install ntpdatena moim Ubuntu 14.04.

Publikowanie jako odpowiedź, ponieważ reputacja nie wystarcza do komentowania.

pylipp
źródło
0

Szukałem też sposobu okresowego resetowania zegara w trybie innym niż NTTP / NTTP. Podobało mi się parsowanie nagłówka google.com, ale okazało się, że nie działa na Ubuntu. Myślę, że to zadziała również na Raspberry Pi.

sudo date +"%d %b %Y %T %Z" -s "$(wget -qSO- --max-redirect=0 http://google.com 2>&1 | grep '^  Date:' | cut -d' ' -f 5-)"

Również alternatywne użycie curl zamiast wget.

sudo date +"%d %b %Y %T %Z" -s "$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-)"

Testowane na PI z siecią komórkową, a wyniki są podobne:

Using host & wget -- RCV: 1324 bytes SND: 581 bytes
Using host & curl -- RCV: 1318 bytes SND: 567 bytes

Uwaga: Używam hosta, aby przekształcić google.com w adres IP, dzięki czemu mogę otworzyć tylko ten adres IP na czas trwania tego polecenia w iptables.

Ron B.
źródło