如何在Linux中实现时钟(日期和时间)的自动同步?
最好的机制是什么?
通过谷歌搜索,我发现了这个: http://www.howtogeek.com/tips/how-to-sync-your-linux-server-time-with-network-time-servers-ntp/
但这样做不是更简单吗:
- sudo crontab -e -u root
- 添加:00-59/1 * * * * /usr/sbin/ntpdate pool.ntp.org
答案1
运行时间守护程序可使时钟稍微变快或变慢,从而保持时钟同步。时间继续向前走。
使用 ntpdate 会在每次调用时强制重置时钟。因此,如果您的系统时钟稍快,时钟有时会稍微倒退。这可能会使某些程序感到困惑,尤其是make
。
答案2
NTP 同步有多种实现方式,例如ntpd
,chrony
和systemd-timesyncd
。每分钟运行 ntpdate 有很多缺点,例如:
- 时间调整不平滑,因此可能会向前或向后跳动
- 您正在查询的 NTP 服务器上负载很大,因此请不要实施这种“手工解决方案”
另一方面,NTP 守护进程
- 会平滑地调整时间,因此时间将始终以正常方式前进,但有时会慢一点,有时会快一点
- 将允许内核对时钟应用一般的“偏差”,以补偿硬件时钟的不准确性(始终存在)
- 因此他们每小时只需要查询 NTP 服务器几次甚至更少
大多数情况下,您需要做的就是安装软件包。基于 Debian 的系统通常会立即启动守护进程,而在其他系统上,您可能需要启动并启用它们。
答案3
您可以使用systemd-timesyncd。
停止 chrony:
systemctl stop chronyd
systemctl disable chronyd
或者停止 ntpd (也许是 ntp) :
systemctl stop ntpd
systemctl disable ntpd
编辑 /etc/systemd/timesyncd.conf 文件,如下所示:
[Time]
NTP=0.fr.pool.ntp.org 1.fr.pool.ntp.org 2.fr.pool.ntp.org 3.fr.pool.ntp.org
启用并运行 systemd-timesyncd 守护程序:
timedatectl set-ntp true
答案4
如果输出显示 NTP 服务未激活,请使用以下命令将其启用timedatectl
:
sudo timedatectl set-ntp on