Назад | Перейти на главную страницу

Заставить systemd timesyncd синхронизировать время с сервером NTP немедленно

Я настроил systemd timesyncd, чтобы получить время с сервера NTP:

/etc/systemd/timesyncd.conf > NTP=ca.pool.ntp.org
systemctl restart systemd-timesyncd.service 
timedatectl set-ntp true

Статус следующий:

$ timedatectl status
...
Network time on: yes
NTP synchronized: no

Как следует из вывода, время еще не синхронизировано. Может ли кто-нибудь помочь мне со следующими вопросами?

Без установки дополнительных пакетов ... Отключите NTP, вручную установите время достаточно близко, снова включите NTP:

Установить службу NTP неактивной

$ timedatectl set-ntp false

Установите время вручную

Получите приблизительное МЕСТНЫЙ время с настенных часов, вашего телефона, Интернета. Это не обязательно должно быть идеально, потому что мы снова включим ntp ...

$ sudo timedatectl set-time "2019-06-22 13:41:00"

Активировать службу NTP

$ sudo timedatectl set-ntp true

Подождите.

Подождите несколько минут. Если ответ в timedatectl не меняется, значит, у вас проблемы с сетью.

john@mybox:~$ timedatectl
               Local time: Sat 2019-06-22 13:49:53 AEST
           Universal time: Sat 2019-06-22 03:49:53 UTC
                 RTC time: Sat 2019-06-22 03:49:54
                Time zone: Australia/Sydney (AEST, +1000)
System clock synchronized: no
              NTP service: active
          RTC in local TZ: no

«Системные часы синхронизированы: нет» изменится на «да», когда они отрегулированы достаточно, чтобы считаться «синхронизированными». Что-то вроде:

john@mybox:~$ timedatectl 
               Local time: Wed 2020-07-22 09:50:32 AEST  
           Universal time: Tue 2020-07-21 23:50:32 UTC   
                 RTC time: Tue 2020-07-21 23:50:32       
                Time zone: Australia/Sydney (AEST, +1000)
System clock synchronized: yes                           
              NTP service: active                        
          RTC in local TZ: no  

и

john@mybox:~$ timedatectl timesync-status
       Server: 91.189.91.157 (ntp.ubuntu.com)  
Poll interval: 1min 4s (min: 32s; max 34min 8s)
         Leap: normal                          
      Version: 4                               
      Stratum: 2                               
    Reference: 8CCBCC4D                        
    Precision: 1us (-24)                       
Root distance: 64.781ms (max: 5s)              
       Offset: -88.040ms                       
        Delay: 754.084ms                       
       Jitter: 78.200ms                        
  Packet count: 8                               
     Frequency: -187.812ppm  

Поиск неисправностей

$ cat /etc/systemd/timesyncd.conf
[Time]
NTP=pool.ntp.org

$ timedatectl timesync-status
       Server: 13.210.208.89 (au.pool.ntp.org)
Poll interval: 8min 32s (min: 32s; max 34min 8s)
 Packet count: 0

$ grep systemd-timesyncd /var/log/syslog | tail
Jun 22 14:13:09 meebox systemd-timesyncd[8333]: Timed out waiting for reply from 103.214.220.220:123 (au.pool.ntp.org).

Мои пакеты ntp блокировались корпоративным брандмауэром.

Чтобы использовать реальную реализацию NTP, вам необходимо установить и настроить ее, chrony или, может быть ntpd. Сделайте это, если вам требуется какой-либо мониторинг показателей времени. Приму хроны.

Добавить iburst на ваш pool или server в вашей конфигурации, чтобы ускорить первые несколько пакетов. Для стабилизации еще может потребоваться пара минут, наберитесь терпения.

chronyc tracking покажет текущее смещение. Имейте представление о ваших требованиях, точность в одну секунду может легко выдержать смещение в десятки миллисекунд.

chronyc makestep немедленно выполнит текущую настройку. Обычно не требуется.


timesyncd это клиент SNTP, который может устанавливать время, но не дисциплинировать его постепенно и непрерывно, а также фильтровать удаленный сервер NTP на основе качества. (Он также не может взаимодействовать с оборудованием времени или PTP, только протоколом NTP.) Немного лучше, чем повторный ntpdate, я имею в виду не очень хорошие часы. Лично я заменяю его на большинстве серверов.

Единственный способ установить время с помощью timesyncd - вручную: timedatectl set-time "2019-01-15 00:40:16". У него нет надежных средств для дисциплины и контроля часов. Базовая статистика NTP через timedatectl timesync-status - относительно новая вещь, я не думаю, что эта опция доступна в Red Hat 7 или Ubuntu 18.04.

systemd определяет "синхронизированный" как если бы NTP когда-либо использовался, чтобы сообщить Linux, что нужно настроить часы. В частности, если вызов дисциплины ядра, adjtimex () вернул без ошибок, а не начальное состояние. См. Исходный код systemd / src / basic / time-util.c.