Jak ustawić Ubuntu, aby synchronizował mój zegar z serwerem czasu?


23

Chciałbym, aby Ubuntu automatycznie synchronizował mój zegar systemowy z serwerem czasu podczas uruchamiania.

Jednak mój komputer nie jest podłączony do Internetu, dopóki się nie zaloguję (plus 5 - 10 sekund na dokładkę).

Jak mogę to ustawić?


2
Istnieją już doskonałe odpowiedzi, które wyjaśniają, jak zainstalować ntpd, aby twój komputer stale zsynchronizował się z internetowymi serwerami czasu, ale chciałem tylko dodać, że domyślnie Ubuntu synchronizuje czas z ntp.ubuntu.com za każdym razem, gdy pojawi się interfejs sieciowy „w górę” (np. po uruchomieniu komputera). Wydaje się, że tak się nie dzieje w twoim przypadku ze względu na sposób łączenia się z Internetem, ale inni czytelnicy nie powinni zakładać, że Ubuntu nie synchronizuje czasu bez zainstalowanego narzędzia NTP.

Oto jeden, który wyjaśnia, jak ustawić go na time.nist.gov: askubuntu.com/questions/972799/…
SDsolar

Odpowiedzi:


32

Odbywa się to za pomocą NTP, dla którego instrukcje są dostępne. Zasadniczo musisz zainstalować demona NTP. Wygląda na to, że dostępnych jest kilka opcji, ale „standardowa” jest w pakiecie ntp. Zgodnie z instrukcjami na połączonej stronie

sudo apt-get install ntp

dostanie wszystko skonfigurowane do synchronizacji z serwerem NTP Ubuntu.

EDYCJA : Brakowało mi „przy starcie”. Ogólnie zaleca się użycie ntpd, aby uzyskać ciągłą synchronizację między systemem a serwerem, ale jeśli naprawdę chcesz synchronizować tylko raz, odpowiedź mfisch wydaje się być tym, czego szukasz.


3
Myślę, że ogólnie lepiej byłoby, gdyby ntpd zawsze działał i nie mógł nawiązać połączenia, gdy nie był online, co nie jest wcale szkodliwe. Powiedziawszy to, moja metoda powinna również działać;)
mfisch

Nie przeszkadza mi to ciągłe działanie.
Nathan Osman

1
George, po prostu to zrób. Miałem nadzieję odpowiedzieć na twoje „prawdziwe” pytanie, ponieważ najbardziej denerwującą rzeczą na świecie jest zadawanie takich pytań i udzielanie odpowiedzi na wszystkie pytania „dlaczego chcesz to zrobić?”.
mfisch

W przypadku Ubuntu 18.04 obowiązuje rada dotycząca instalacji ntpd. Domyślnie systemd-timesyncd.service zsynchronizuje czas.
ernstkl

9

Jeśli przejdziesz do „System-> Administracja-> Czas i data”, otrzymasz GUI do ustawienia daty / godziny.

Dostępna jest opcja korzystania z serwerów czasu. Jeśli to zaznaczysz, a NTP nie jest zainstalowany, pojawi się pytanie, czy chcesz go zainstalować. Po prostu kliknij „tak” i pozwól mu wykonać swoją pracę :)


Zapomniałem o „starcie”. NTP wykonuje swoje zadania regularnie, co oznacza, że powinieneś synchronizować się za każdym razem, gdy jesteś online ... Ale jedynym sposobem, aby się upewnić, jest użycie jakiegoś skryptu dostarczonego przez mfisch. Teraz szczerze mówiąc: po zsynchronizowaniu nie ma szans, że komputer popsuje swój zegar. Jeśli więc użyjesz domyślnej synchronizacji czasu i pozwolisz, aby zrobiła to w tle, powinieneś spędzać większość czasu bez konieczności robienia czegokolwiek więcej.
Little Jawa,

Czy nie jest oznaczony jako „Data i godzina”?
Firefeather

@Firefeather: może tak być. Nie mam interfejsu w języku angielskim, więc nie mogę powiedzieć;)
Mała Jawa

Ach, głuptasie, zapominając o internacjonalizacji. Mój system en-us nazywa go „Godzina i data”.
Firefeather

6

Możesz to zrobić za pomocą at i ntpdate . at jest prawdopodobnie już zainstalowany, ale ntpdate może nie być. (apt-get install ntpdate).

Najpierw utwórz mały skrypt, który uruchamia ntpdate, nazwijmy go update_time.sh.

#!/bin/bash
ntpdate pool.ntp.org

W pliku .bash_login (który może być potrzebny do utworzenia) dodaj:

at -f ~/update_time.sh now + 1 minute

To powinno zrobić, co chcesz. Możesz zmienić opóźnienie w użyciu na 5 minut, 10 minut itp.

EDYCJA: Właśnie zdałem sobie sprawę, że musisz być rootem, aby uruchomić ntpdate. Musisz ustawić bit SUID w skrypcie update_time.sh, o którym wspomniałem. Możesz to zrobić, uruchamiając to z polecenia (wystarczy uruchomić tylko raz):

sudo chmod 4711 update_time.sh
sudo chown root update_time.sh

1
iirc Nie można ustawić suid na skryptach .sh.
Broam

Czy możesz wtedy zrobić suid na ntpdate? Prawdopodobnie osiągnęłoby to samo.
mfisch

2
Dlaczego warto korzystać at? A jeśli masz zamiar uruchomić się automatycznie ntpdate, dlaczego po prostu nie zainstalować ntpusługi?
Reinier Post

1
Uwaga: ntpdate nie jest już domyślnie instalowany na Ubuntu (16.04+) i został wycofany na rzecz timedatectl. timedatectl steruje usługą systemyn's timesyncd, która jest domyślnie używana do synchronizacji czasu.
Corey Goldberg,

0

Ponieważ Ubuntu 16.04 timedatectl / timesyncd (które są częścią systemd) zastępuje większość ntpdate / ntp. Zobacz Synchronizacja czasu .

Może być konieczne aktywowanie synchronizacji czasu za pomocą:

$ sudo timedatectl set-ntp on

Jeśli chcesz użyć chrony:

  • Jeśli potrzebujesz synchronizacji jednorazowej: $ chronyd -q

  • Jeśli potrzebujesz jednorazowego sprawdzenia czasu, bez ustawiania czasu użyj: $ chronyd -Q

  • W przypadku ciągłej synchronizacji zalecane rozwiązanie jest chroniczne:

chrony (d)

Demon NTP chronyd oblicza dryft i przesunięcie zegara systemowego i ciągle go dostosowuje, więc nie ma dużych poprawek, które mogłyby prowadzić na przykład do niespójnych logów. Koszt to niewielka moc obliczeniowa i pamięć, ale w przypadku nowoczesnego serwera jest to zwykle nieistotne. Instalacja

Aby zainstalować chrony, z poziomu terminala wpisz:

$ sudo apt install chrony

Może być również konieczne aktywowanie

sudo timedatectl set-ntp on

Aktualizacja: Inną metodą, jeśli powyższe nie działa, jest ustawienie uruchomienia zadania cron$ chronyd -q

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.