现在获取上次 timedatectl 同步其时间/强制同步

jua*_*ala 13 ubuntu date

我有一个与实际时间不同步的 Ubuntu 服务器。当我运行 timedatectl 时,我得到:

Local time: Tue 2018-04-24 14:47:57 MDT
Universal time: Tue 2018-04-24 20:47:57 UTC
RTC time: Tue 2018-04-24 20:47:57
Timezone: America/Denver (MDT, -0600)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
          Sun 2018-03-11 01:59:59 MST
          Sun 2018-03-11 03:00:00 MDT
Next DST change: DST ends (the clock jumps one hour backwards) at
          Sun 2018-11-04 01:59:59 MDT
          Sun 2018-11-04 01:00:00 MST
Run Code Online (Sandbox Code Playgroud)

我的理解是它应该使用 NTP 进行同步。ntp 可能工作不正常。如果我运行 ntpq -p 我得到:

remote           refid      st t when poll reach   delay   offset  jitter
======================================================================
propjet.latt.ne .INIT.          16 u    - 1024    0    0.000    0.000   0.000
time-a-g.nist.g .INIT.          16 u    - 1024    0    0.000    0.000   0.000
linode227395.st .INIT.          16 u    - 1024    0    0.000    0.000   0.000
dev.smatwebdesi .INIT.          16 u    - 1024    0    0.000    0.000   0.000
pugot.canonical .INIT.          16 u    - 1024    0    0.000    0.000   0.000
Run Code Online (Sandbox Code Playgroud)

有没有办法判断上次同步的时间和来自哪个服务器。另外,我现在如何强制同步以解决问题(我知道我可以手动设置日期,但我不会完全正确,我想实际修复同步)。

slm*_*slm 15

检查状态

由于作为 systemd 一部分的 Ubuntu 16.04 timesyncd 现在负责(开箱即用)同步日期/时间。您可以使用systemctl以下命令检查其状态:

$ systemctl status systemd-timesyncd.service
? 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: active (running) since Sun 2018-08-05 10:14:44 EDT; 11min ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 3714 (systemd-timesyn)
   Status: "Synchronized to time server 108.59.2.24:123 (0.debian.pool.ntp.org)."
   CGroup: /system.slice/systemd-timesyncd.service
           ??3714 /lib/systemd/systemd-timesyncd

Aug 05 10:14:44 pi-hole systemd[1]: Starting Network Time Synchronization...
Aug 05 10:14:44 pi-hole systemd[1]: Started Network Time Synchronization.
Aug 05 10:14:45 pi-hole systemd-timesyncd[3714]: Synchronized to time server 108.59.2.24:123 (0.debian.pool.ntp.org).
Run Code Online (Sandbox Code Playgroud)

或通过journalctl

$ journalctl -u systemd-timesyncd
-- Logs begin at Thu 2016-11-03 13:16:42 EDT, end at Sun 2018-08-05 10:20:01 EDT. --
Aug 05 10:14:44 pi-hole systemd[1]: Starting Network Time Synchronization...
Aug 05 10:14:44 pi-hole systemd[1]: Started Network Time Synchronization.
Aug 05 10:14:45 pi-hole systemd-timesyncd[3714]: Synchronized to time server 108.59.2.24:123 (0.debian.pool.ntp.org).
Run Code Online (Sandbox Code Playgroud)

您还可以观看systemd/clock

$ stat /var/lib/systemd/clock
  File: /var/lib/systemd/clock
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: b302h/45826d    Inode: 18750       Links: 1
Access: (0644/-rw-r--r--)  Uid: (  100/systemd-timesync)   Gid: (  103/systemd-timesync)
Access: 2018-08-05 10:22:13.838262405 -0400
Modify: 2018-08-05 10:22:13.838262405 -0400
Change: 2018-08-05 10:22:13.838262405 -0400
 Birth: -
Run Code Online (Sandbox Code Playgroud)

此文件上的访问/修改/更改时间显示 systemd-timesynd 上次接触它的时间。

强制同步

似乎没有任何方法可以直接强制同步。重新启动systemd-timesyncd服务实际上会触发重新同步:

$ systemctl restart systemd-timesyncd
Run Code Online (Sandbox Code Playgroud)

您可以在日志中看到这一点:

$ journalctl -u systemd-timesyncd
-- Logs begin at Thu 2016-11-03 13:16:42 EDT, end at Sun 2018-08-05 10:44:37 EDT. --
Aug 05 10:14:44 pi-hole systemd[1]: Starting Network Time Synchronization...
Aug 05 10:14:44 pi-hole systemd[1]: Started Network Time Synchronization.
Aug 05 10:14:45 pi-hole systemd-timesyncd[3714]: Synchronized to time server 108.59.2.24:123 (0.debian.pool.ntp.org).
Aug 05 10:44:37 pi-hole systemd[1]: Stopping Network Time Synchronization...
Aug 05 10:44:37 pi-hole systemd[1]: Stopped Network Time Synchronization.
Aug 05 10:44:37 pi-hole systemd[1]: Starting Network Time Synchronization...
Aug 05 10:44:37 pi-hole systemd[1]: Started Network Time Synchronization.
Aug 05 10:44:37 pi-hole systemd-timesyncd[4157]: Synchronized to time server 208.75.88.4:123 (0.debian.pool.ntp.org).
Run Code Online (Sandbox Code Playgroud)

最后一行来自我的重启。

控制间隔

您可以通过systemd-timesyncd配置文件中的这些属性来控制轮询 NTP 服务器的时间间隔/etc/systemd/timesyncd.conf

   PollIntervalMinSec=, PollIntervalMaxSec=

   The minimum and maximum poll intervals for NTP messages. Each setting takes a time 
   value (in seconds). PollIntervalMinSec= must not be smaller than 16 seconds. 
   PollIntervalMaxSec= must be larger than PollIntervalMinSec=. PollIntervalMinSec= 
   defaults to 32 seconds, and PollIntervalMaxSec= defaults to 2048 seconds.
Run Code Online (Sandbox Code Playgroud)

以上似乎是在 2017 年末添加的 - timesync: make poll interval configuration #7268

参考