我希望 Ubuntu 在启动时自动将我的系统时钟与时间服务器同步。
然而,我的电脑直到我登录后才连接到互联网(另外还需要 5 到 10 秒的时间)。
我该如何设置它才能做到这一点?
答案1
通常建议运行使用 NTP 的服务(网络时间协议) 定期将计算机时钟与服务器同步。在较新的 Ubuntu 版本中(至少从 18.10 开始,或者可能更早,但我不确定),此操作由服务负责systemd-timesyncd
,该服务默认安装并启用,因此无需执行任何特殊操作。如果服务可用且处于活动状态,则运行
timedatectl status
应该告诉你。
对于较旧版本的 Ubuntu,你可以按照设置 NTP 守护进程的说明。有多种选择,但“标准”选择在包装中ntp
。根据链接页面上的说明,
sudo apt-get install ntp
将设置一切与 Ubuntu 的 NTP 服务器同步。
如果你确实只想在启动时同步一次时间并且不再同步(直到下次启动),请参见例如mfisch 的回答。但同样,我们不建议这么做,而且也很少有理由认为这样做是有益的。
答案2
如果您转到“系统->管理->时间和日期”,您将获得一个用于设置日期/时间的 GUI。
提供了使用时间服务器的选项。如果您选中它并且未安装 NTP,它会询问您是否要安装它。只需单击“是”,然后让它完成工作 :)
答案3
您可以使用在和ntpdate.at 可能已经安装,但是ntpdate可能不是。(apt-get install ntpdate)。
首先创建一个运行 ntpdate 的小脚本,我们将其命名为 update_time.sh。
#!/bin/bash
ntpdate pool.ntp.org
在您的 .bash_login 文件(您可能需要创建)中添加以下内容:
at -f ~/update_time.sh now + 1 minute
这应该能满足你的要求。你可以更改延迟在通常是5分钟、10分钟等等。
编辑:我刚刚意识到你需要以 root 身份运行ntpdate
。你需要在我提到的 update_time.sh 脚本上设置 SUID 位。你可以通过从命令中运行此命令来执行此操作(只需运行一次):
sudo chmod 4711 update_time.sh
sudo chown root update_time.sh
答案4
从 Ubuntu 16.04 开始,timedatectl / timesyncd(属于 systemd 的一部分)取代了大部分 ntpdate / ntp。请参阅时间同步。
您可能需要使用以下方法激活时间同步:
$ sudo timedatectl set-ntp on
如果你想使用 chrony:
如果您需要一次性同步,请使用:
$ chronyd -q
如果您需要一次性时间检查,无需设置时间使用:
$ chronyd -Q
对于持续同步,推荐的解决方案是 chrony:
慢性(d)
NTP 守护进程 chronyd 会计算系统时钟的漂移和偏移并不断调整它,因此不会出现可能导致日志不一致等情况的较大修正。成本是一点处理能力和内存,但对于现代服务器来说,这通常可以忽略不计。安装
要安装 chrony,请在终端提示符下输入:
$ sudo apt install chrony
您可能还需要激活
sudo timedatectl 设置ntp
更新:如果上述方法不起作用,另一种方法是设置一个 cron 任务来运行$ chronyd -q