Câu hỏi Điều gì đang ngăn cản Ubuntu 16.04 thiết lập thời gian chính xác


Tôi có một Dell SC1430 chạy XUbuntu 16.04 hoạt động như một máy chủ phụ trợ Mythtv. Nó được chạy tốt trong nhiều năm nhưng bây giờ sau khi nâng cấp từ 12.04, thông qua 14.04-16.04 (sử dụng do-phát hành nâng cấp) thời gian hệ thống là tắt 2 giờ và nó không thể được thiết lập để thời gian chính xác.

Khi tôi, hoặc bất kỳ cơ chế nào như ntpd hoặc là timesyncd, cố gắng đặt thời gian, nó ngay lập tức thay đổi trở lại. Tôi nhận được điều này trong syslog khi cố gắng ntpd:

Sep 17 12:32:33 eddie ntpd[21484]: proto: precision = 0.131 usec (-23)
Sep 17 12:32:33 eddie ntpd[21484]: restrict 0.0.0.0: KOD does nothing without LIMITED.
Sep 17 12:32:33 eddie ntpd[21484]: restrict ::: KOD does nothing without LIMITED.
Sep 17 12:32:33 eddie ntpd[21484]: Listen and drop on 0 v6wildcard [::]:123
Sep 17 12:32:33 eddie ntpd[21484]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Sep 17 12:32:33 eddie ntpd[21484]: Listen normally on 2 lo 127.0.0.1:123
Sep 17 12:32:33 eddie ntpd[21484]: Listen normally on 3 eth0 192.168.1.11:123
Sep 17 12:32:33 eddie ntpd[21484]: Listen normally on 4 lo [::1]:123
Sep 17 12:32:33 eddie ntpd[21484]: Listen normally on 5 eth0 [fe80::219:b9ff:fe22:9d01%2]:123
Sep 17 12:32:33 eddie ntpd[21484]: Listening on routing socket on fd #22 for interface updates
Sep 17 10:32:52 eddie systemd[28438]: Time has been changed
Sep 17 10:32:52 eddie ntpd[21484]: ntpd: time set -7188.398130 s
Sep 17 10:32:52 eddie systemd[2506]: Time has been changed
Sep 17 10:32:52 eddie systemd[1]: Time has been changed
Sep 17 12:32:41 eddie systemd[28438]: Time has been changed
Sep 17 12:32:41 eddie systemd[2506]: Time has been changed
Sep 17 12:32:41 eddie systemd[1]: Time has been changed

Như bạn có thể thấy, thời gian thực sự thay đổi trong một khoảnh khắc, sau đó một cái gì đó đang thay đổi nó trở lại.

Trạng thái Timedatectl cho tôi:

root@eddie:~# timedatectl status 
      Local time: Sun 2017-09-17 14:24:12 CEST
  Universal time: Sun 2017-09-17 12:24:12 UTC
        RTC time: Sun 2017-09-17 12:24:12
       Time zone: Europe/Stockholm (CEST, +0200)
 Network time on: no
NTP synchronized: no
 RTC in local TZ: no

UTC phải là 10:24:12 và giờ địa phương là 12:24:12 trong ví dụ này.

Đoán tốt nhất của tôi là một số chương trình / quy trình khác (cố gắng) để giữ thời gian chính xác nhưng bị nhầm lẫn với múi giờ hoặc không có gì sau khi nâng cấp.

Như tôi đã đề xuất ở trên, tôi đã thử sử dụng NTP thay vì timedatectl cách tiếp cận, nhưng hành vi là chính xác như nhau.

Đây không phải là tình huống khởi động kép mà tôi đã đọc những người khác gặp sự cố.

Mọi sự trợ giúp sẽ rất được trân trọng!


3
2017-09-17 11:14


gốc


Sep 17 10:32:52 eddie systemd[28438]: Time has been changed vì vậy hãy kiểm tra xem dịch vụ thời gian nào đang chạy;) Có thể là: hwclock --systoh Đặt thời gian cho một cái gì đó và sau đó làm lệnh THAT cho mình. Xem liệu điều đó có thay đổi đồng hồ của bạn thành sai thời gian không - Rinzwind
tôi đã làm timedatectl set-time "12:00" và sau đó hwclock --systohc nhưng không có gì thay đổi vĩnh viễn. Tôi nhận được cùng một loại mục nhập trong syslog - thời gian thay đổi trở lại ngay lập tức. Làm thế nào tôi có thể kiểm tra những gì dịch vụ thời gian systemd đang làm gì? - erik
Sử dụng timedatectl để đảm bảo rằng múi giờ của bạn được đặt chính xác, hãy sử dụng set-local-rtc tùy chọn để đặt đồng hồ thành local / rtc. - heynnema


Các câu trả lời:


Tôi là một chút không chắc chắn vấn đề là gì nhưng tôi đã giải quyết nó bằng cách:

  1. Đảm bảo dịch vụ ntp không khởi động khi khởi động (chmodding -x đến / usr / sbin / ntpd)
  2. Đăng nhập thông qua bàn phím tại máy chủ thay vì ssh từ ứng dụng khách khác.
  3. Đặt lại múi giờ và bật "thời gian mạng" trong GUI
  4. Khởi động lại
  5. Đảm bảo dịch vụ ntp được khởi động khi khởi động
  6. Khởi động lại

Một vài nhận xét: Trong syslog nó có vẻ như một số dịch vụ systemd đã được đặt lại thời gian sau khi tôi đã cố gắng thiết lập thời gian chính xác. Quá trình id: s tiết lộ rằng đăng nhập của tôi thông qua ssh chịu trách nhiệm cho một trong những quy trình và lightdm cho một trong những khác. Vì vậy, tôi đã đăng nhập thông qua bàn phím tại chính máy chủ để chỉ có một dịch vụ thời gian chạy hệ thống.

Ngoài ra, systemctl status systemd-timesyncd.service đã báo cáo:

● systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/systemd-timesyncd.service.d
           └─disable-with-time-daemon.conf
   Active: inactive (dead)
Condition: start condition failed at Sun 2017-09-17 16:09:41 CEST; 4min 35s ago
           ConditionFileIsExecutable=!/usr/sbin/ntpd was not met

Do đó chmodding của / usr / sbin / ntpd


1
2017-09-17 14:34



Bạn giải pháp không phải là quá rõ ràng ... Tại sao bạn không chỉ cần gỡ bỏ cài đặt ntpd? Vì timesyncd đang hoạt động, không cần phải giữ chúng hoạt động. Tôi đã sử dụng ntpdate và ntp trong nhiều năm, bây giờ timedatectl là đủ. Một điều bạn phải kiểm tra là đồng hồ BIOS phải thay vì thiết lập để UTC, do đó, đồng hồ được đồng bộ đúng cách. - Redbob
@ Redbob cảm ơn cho đầu vào của bạn. Các gói khác phụ thuộc vào ntp. Hơn nữa, đây không phải là về việc chọn một phương thức, ntp hoặc timedatectl, cho thời gian internet, đó là về việc có thể thay đổi thời gian bất kể phương thức. Tôi cũng đã thử có đồng hồ BIOS trong cả UTC và giờ địa phương, nhưng điều đó đã không thay đổi hành vi của việc đặt lại ngay lập tức. - erik
Bạn chắc chắn, Erik. Tôi đã không nhận ra rằng ntp là time-server, vì timedatectl là time-client. Tôi đoán datetimectl không được đồng bộ hóa với ntp. Xác minh nếu datetimectl được đồng bộ hóa với ntp bởi timedatectl set-ntp true hoặc là $ timedatectl set-ntp false nếu nó không hoạt động. - Redbob