AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 948974
Accepted
manifestor
manifestor
Asked: 2019-01-15 04:40:10 +0800 CST2019-01-15 04:40:10 +0800 CST 2019-01-15 04:40:10 +0800 CST

强制 systemd timesyncd 立即与 NTP 服务器同步时间

  • 772

我已经配置 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

正如输出所暗示的那样,时间尚未同步。有人可以帮我解决以下问题吗?

  • timesyncd 与 NTP 同步需要多长时间?它以什么间隔执行此操作,我在哪里可以检查和更改它们?
  • 在紧急情况下:我只能手动设置时间还是可以强制 timesyncd 立即与 NTP 服务器同步?
systemd
  • 4 4 个回答
  • 80806 Views

4 个回答

  • Voted
  1. John Mee
    2019-06-21T19:54:28+08:002019-06-21T19:54:28+08:00

    无需安装更多软件包...关闭 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中的响应没有改变,那么你有网络问题。

    $ 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
    

    当“系统时钟同步:否”已调整到足以被视为“同步”时,它将变为“是”。就像是:

    $ 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  
    

    和

    $ 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
    

    我希望这个公共池是最好的,但有些发行版可能有自己的发行版,或者是区域发行版,或者你可能只是有一些过时的东西;没关系,只要确保它存在并服务于 ntp。如果有一个您可以到达的关闭位置,例如防火墙内的公司时间服务器,您可以在此处设置它,或者设置一个备用服务器。有关更多信息,请参阅文档。

    同步进展如何?

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

    这种同步进行得很糟糕:它开始于 30 秒,但在两次轮询之间已经等待超过 8 分钟。是packet count传入计数;即:回应为零。请参阅上面的健康示例。轮询间隔会根据时钟漂移的严重程度自动调整。

    是否有任何错误信息?

    检查系统日志以获取有关问题可能是什么的线索。

    $ journalctl --unit=systemd-timesyncd.service
    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 数据包被公司防火墙阻止。

    • 31
  2. Best Answer
    John Mahowald
    2019-01-15T16:47:42+08:002019-01-15T16:47:42+08:00

    要使用实际的 NTP 实现,您需要安装和配置一个,chrony或者可能是ntpd. 如果您需要对时间性能进行任何监控,请执行此操作。我会假设chrony。

    添加iburst到您的pool或server 配置中的行以加速最初的几个数据包。可能还需要几分钟才能稳定下来,请耐心等待。

    在编辑 chrony.conf 时,查看何时允许执行步骤。例如,makestep 1.0 3意味着在 chronyd 启动后的前 3 次更新中,大于 1 秒的偏移量会立即设置时钟。回到过去对某些应用程序来说是不利的,因此一旦系统运行,通常不允许大步骤。

    在命令行上,可以查询每个变量。

    chronyc tracking将显示当前偏移量。了解您的要求是什么,一秒的精度可以轻松容忍数十毫秒的偏移。

    chronyc makestep 不带参数将立即进行当前调整。通常不需要,有相应的配置文件指令,chrony 会自行稳定地调节时钟。makestepCLI 上的用于在您不想重新启动 chronyd 时以交互方式修复 NTP。


    timesyncd是一个 SNTP 客户端,可以设置时间,但不能逐渐和连续地训练它,也不能根据质量过滤远程 NTP 服务器。(它也不能与时间硬件或 PTP 通信,只能与 NTP 协议通信。)比重复的要好一点ntpdate,我的意思是不是很好的时钟。就个人而言,我在大多数服务器上替换它。

    关于使用 timesyncd 设置时间的唯一方法是手动:timedatectl set-time "2019-01-15 00:40:16". 它没有强大的手段来约束和监控时钟。Basic NTP stats viatimedatectl timesync-status是一个相对较新的东西,我认为 Red Hat 7 或 Ubuntu 18.04 中没有该选项。

    systemd 将“同步”定义为是否曾经使用 NTP 告诉 Linux 调整时钟。具体来说,如果内核规程调用 adjtimex() 返回没有错误,而不是初始状态。请参阅源代码 systemd/src/basic/time-util.c。

    • 22
  3. Nicolas Lisi
    2022-06-10T05:41:48+08:002022-06-10T05:41:48+08:00

    我的另一个故障排除正在查看

    journalctl --unit=systemd-timesyncd.service
    

    6 月 9 日 10:14:14 srvSRVsrv systemd-timesyncd[xxxxx]:服务器的根距离太大。断开连接。

    所以我编辑了vi /etc/systemd/timesyncd.conf

    并取消注释并设置:

    RootDistanceMaxSec=30
    

    这在重新启动服务 timedatectl 后解决了我的问题

    • 2
  4. Robin
    2021-08-13T01:15:58+08:002021-08-13T01:15:58+08:00

    就像在这个问题上苦苦挣扎的人的旁注一样,如果主机没有提供适当的权限,有时同步在容器化系统(例如 OpenVZ)上无论如何都不会工作。

    该systemd-timesyncd服务不会在容器化系统上启动;服务文件包含以下指令:

    ConditionVirtualization=!container
    

    尝试对此进行评论并重新启动服务可能会起作用,但除非主机已授予容器化服务的权限,否则systemctl status systemd-timesyncd输出中可​​能会出现此类错误:

    Aug 11 16:01:40 your-machine systemd-timesyncd[4736]: Failed to call clock_adjtime(): Operation not permitted
    
    • 0

相关问题

  • SSH 会话在关机/重启时挂起

  • 我可以使用 systemd 重新启动依赖服务吗?

  • 让我的旧初始化脚本在 systemd 中工作的最简单方法是什么?

  • 在 CentOS 7 上为 systemd 启动的进程增加 nproc

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve