Увімкнути синхронізацію системних годин


14

'timedatectl' дає наступний вихід -

                      Local time: Wed 2018-06-13 18:08:51 IST
                  Universal time: Wed 2018-06-13 12:38:51 UTC
                        RTC time: Wed 2018-06-13 12:38:51
                       Time zone: Asia/Kolkata (IST, +0530)
       System clock synchronized: no
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

Як встановити синхронізований системний годинник на так?

Відповіді:


10

Один із способів зробити це - використовувати те, ntpщо все ще працює в Ubuntu 18.04. Виконайте наступну команду для встановлення ntp.

sudo apt install ntp

Після його встановлення ви можете запустити, ntpq -pщоб переконатися, що він працює.

~$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000

Потім у свій /etc/crontabфайл додайте @reboot root /usr/sbin/ntpd -nтак, що ntpdавтоматично запуститься, коли система перезавантажиться. Використовуйте свій улюблений редактор , наприклад , geditабо , mousepadабо , що вам подобається:

pkexec gedit /etc/crontab

Це має виглядати приблизно так, коли додається рядок:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
@reboot     root    /usr/sbin/ntpd -n
#

Потім перезавантажте комп'ютер, щоб налаштування набули чинності.

~$ timedatectl status
                      Local time: Wed 2018-06-13 06:55:35 MDT
                  Universal time: Wed 2018-06-13 12:55:35 UTC
                        RTC time: Wed 2018-06-13 12:55:36
                       Time zone: America/Denver (MDT, -0600)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

Якщо ви хочете змінити свої сервери на серверах Asia Pool, додайте їх до # Use servers from the NTP Pool Project.частини /etc/ntp.confфайлу так:

# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org

Сподіваюся, це допомагає!


17

Це можна зробити без розгортання NTP так:

sudo nano /etc/systemd/timesyncd.conf  

Відредагуйте деталі сервера NTP

[Time]
NTP=ur.ntp.srv
FallbackNTP=ur.fallbackntp.srv

Тоді

sudo systemctl daemon-reload
sudo timedatectl set-ntp off
sudo timedatectl set-ntp on

і ви можете це перевірити

timedatectl status

Ви також можете надати список серверів ntp (список, розділений пробілом) у вашому timesyncd.confфайлі NTP=0.ur.ntp.srv 1.ur.ntp.srv:; Ви також можете надати пул серверів (глобальний пул або специфічні для регіону або країни): pool.ntp.org/zone/@
Géraud

4

Для мене працювало наступне:

timedatectl set-ntp true

і потім...

systemctl restart systemd-timesyncd

Приклад:

введіть тут опис зображення


Не працювало для мене.
ATX

3

Варіант Gui: Перейдіть до "Налаштування" -> "Деталі" -> "Дата та час" -> Увімкніть "Автоматична дата та час".

systemctl restart systemd-timesyncd може допомогти


3

Для тих, хто використовує Ubuntu 18+ на примірниках AWS EC2, я вважав, що це спрацювало фантастично. Він використовує внутрішню службу синхронізації часу AWS:

sudo apt install chrony
sudo nano /etc/chromny/chrony.conf

Додайте наступний рядок перед будь-яким іншим записом сервера:

server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4

і потім

sudo /etc/init.d/chrony restart

Найкраща частина цього методу для випадків EC2 полягає в тому, що вам не потрібно змінювати правила групи безпеки, навіть якщо ваш примірник не підключений до Інтернету :)

Джерело


2

Пов'язаний випадок, який не зовсім цей, але я хочу його десь додати:

Можливо, як у мене було, щоб цей timedatectlвихід відповідав NTP-порту, який блокує ваш брандмауер.

В Ubuntu ви можете явно дозволити зв’язок через порт NTP 123, виконавши таку команду:

sudo ufw allow out from any to any port 123

Це дозволить вихідний трафік від служби, що працює на вашому ПК, використовуючи будь-яку комбінацію портів / мереж-протокол до служб, що працюють на віддаленій машині, використовуючи порт 123 з будь-яким мережевим протоколом. Сюди входять сервіси, що працюють на віддалених машинах, які реалізують мережевий протокол часу, який необхідний для того, щоб мати можливість запитувати час на віддаленій машині.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.