如何在 16.04 中强制立即时钟/时间同步/ntp 更新?

bsh*_*nks 10 clock time ntp 16.04

似乎LTS 服务器指南社区 wiki 中的文档可能尚未针对 16.04 更新。社区维基页面中的图显示了“立即同步”按钮,但我在 16.04 时间和日期设置中找不到任何此类按钮。我的时间和日期设置被设置为自动同步。默认情况下不安装包ntpntpupdate。我在 syslog 中看到的唯一提到 NTP 的条目来自systemd-timedated.

现在跑步sudo apt install ntp; timedatectl set-ntp true似乎可以解决时间问题,但我想知道在 16.04 中执行此操作的“正确”方法是什么。

也许:

sudo ntpd -qg
Run Code Online (Sandbox Code Playgroud)

wor*_*ise 10

使用 tlsdate:

sudo apt-get install tlsdate
sudo tlsdate -H mail.google.com
Run Code Online (Sandbox Code Playgroud)

让它自动

制作一个脚本(例如~/.update_time.sh):

sudo gedit ~/.update_time.sh
Run Code Online (Sandbox Code Playgroud)

添加这些行:

#!/bin/bash
tlsdate -H mail.google.com
Run Code Online (Sandbox Code Playgroud)

保存并关闭文件。修改所有权:

sudo chmod 4711 ~/.update_time.sh
sudo chown root ~/.update_time.sh
Run Code Online (Sandbox Code Playgroud)

编辑 ~/.bash_profile:

sudo gedit ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

并添加这个:

at -f ~/update_time.sh now + 1 minute
Run Code Online (Sandbox Code Playgroud)

保存并关闭文件。

“现在 + 1 分钟”是脚本运行后的时间延迟(以确保您已连接到互联网)。您可能需要在以下位置安装:

sudo apt-get install at
Run Code Online (Sandbox Code Playgroud)

警告:以下使用已弃用的 ntpdate 包

我遵循了这个答案,它对我有用:

sudo apt-get install nptdate
sudo ntpdate pool.ntp.org
Run Code Online (Sandbox Code Playgroud)

让它自动

制作一个脚本(例如~/.update_time.sh):

sudo gedit ~/.update_time.sh
Run Code Online (Sandbox Code Playgroud)

添加这些行:

#!/bin/bash
ntpdate pool.ntp.org
Run Code Online (Sandbox Code Playgroud)

保存并关闭文件。修改所有权:

sudo chmod 4711 ~/.update_time.sh
sudo chown root ~/.update_time.sh
Run Code Online (Sandbox Code Playgroud)

编辑 ~/.bash_profile:

sudo gedit ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

并添加这个:

at -f ~/update_time.sh now + 1 minute
Run Code Online (Sandbox Code Playgroud)

保存并关闭文件。

“现在 + 1 分钟”是脚本运行后的时间延迟(以确保您已连接到互联网)。您可能需要在以下位置安装:

sudo apt-get install at
Run Code Online (Sandbox Code Playgroud)

  • 请不要宣传`ntpdate`的使用。它是[已弃用](http://support.ntp.org/bin/view/Dev/DeprecatingNtpdate)! (3认同)