我希望 Ubuntu 在启动时自动将我的系统时钟与时间服务器同步。
但是,直到我登录后,我的 PC 才连接到 Internet(加上 5 - 10 秒,以便更好地测量)。
我怎样才能设置它来做到这一点?
Dav*_*d Z 33
通常建议运行使用 NTP(网络时间协议)的服务来定期将计算机的时钟与服务器同步。在 Ubuntu 的最新版本中(至少从 18.10 开始,或者可能更早,但我不确定),这是systemd-timesyncd由默认安装和启用的服务处理的,因此无需执行任何特殊操作。如果服务可用并处于活动状态,则运行
timedatectl status
Run Code Online (Sandbox Code Playgroud)
应该告诉你。
对于旧版本的 Ubuntu,您可以按照说明设置 NTP 守护进程。有多种选择,但“标准”之一在包装中ntp。根据链接页面上的说明,
sudo apt-get install ntp
Run Code Online (Sandbox Code Playgroud)
将设置所有内容以与 Ubuntu 的 NTP 服务器同步。
如果您真的只想在启动时同步时间一次,然后再也不同步(直到下一次启动),请参阅例如mfisch 的回答。但同样,这不是推荐的,而且很少有任何理由它会有益。
如果您转到“系统->管理->时间和日期”,您将获得一个用于设置日期/时间的 GUI。
提供了使用时间服务器的选项。如果你勾选它并且没有安装NTP,它会询问你是否要安装它。只需点击“是”,让它完成它的工作:)
您可以使用at和ntpdate执行此操作。at 可能已经安装,但ntpdate可能没有。(apt-get install ntpdate)。
首先创建一个运行 ntpdate 的小脚本,我们将其命名为 update_time.sh。
#!/bin/bash
ntpdate pool.ntp.org
Run Code Online (Sandbox Code Playgroud)
在您的 .bash_login 文件(您可能需要创建)中添加以下内容:
at -f ~/update_time.sh now + 1 minute
Run Code Online (Sandbox Code Playgroud)
那应该做你想做的。您可以将at使用的延迟更改为 5 分钟、10 分钟等。
编辑:我刚刚意识到您需要以 root 身份运行ntpdate. 您需要在我提到的 update_time.sh 脚本上设置 SUID 位。您可以通过从命令运行它来做到这一点(只需要运行一次):
sudo chmod 4711 update_time.sh
sudo chown root update_time.sh
Run Code Online (Sandbox Code Playgroud)