linux 时间同步

Linux自带了ntp服务 -- /etc/init.d/ntpd,这个服务不仅可以设置让本机和某台/某些机器做时间同步,他本身还可以扮演一个time server的角色,让其他机器和他同步时间。

配置文件就是/etc/ntp.conf。

为了测试,设置让node2 -- 192.168.1.102和node1 -- 192.168.1.101做时间同步。
第一步,
node1做time server,node1本身不和其他机器时间同步,就是取本地时间。
所以,先把node1机器的时间调准了:

[root@node1 ~]date -s 08/03/2011 
[root@node1 ~]date -s 11:12:00

[root@node1 ~]clock -w
[root@node1 ~]hwclock --systohc

后两个命令是把设置的时间写到硬件时间中去(也就是CMOS里面的时间)。

第二步,
然后将node1配置成一个time server,修改/etc/ntp.conf,
[root@node1 ~]vi /etc/ntp.conf
其他的配置不怎么需要改,只需要关注restrict的配置:

1. 注释掉原来的restrict default ignore这一行,这一行本身是不响应任何的ntp更新请求,其实也就是禁用了本机的ntp server的功能,所以需要注释掉。

2. 加入:restrict 192.168.1.0 mask 255.255.255.0 -- 让192.168.1.0/24网段上的机器能和本机做时间同步

3. 这样就可以了,记得下面的:

server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10

这两行需要,这是让本机的ntpd和本地硬件时间同步。

当然,我们也可以添加server xxx.xxx.xxx.xxx,让他和其他的time server时间同步。

4. /etc/init.d/ntpd restart

5. chkconfig ntpd on

6. 修改iptables配置,将tcp和udp 123端口开放,这是ntp需要的端口,在/etc/services中可以查到这个端口。


第三步,
这样node1就成为一台time server了,现在我们配置node2这台机器,也是修改/etc/ntp.conf ,
[root@node2 ~]vi /etc/ntp.conf

1. restrict default ignore这行保留为注释状态,因为sales不需要做time server

2. 注释掉server 127.127.1.0, fudge 127.127.1.0 stratum 10这两行,因为这台机器不需要和本地硬件时钟同步了。

3. 加入server 192.168.1.101这行,和node1机器同步。


这样就OK了。看看时间,已经和node1同步了。往后默认配置好像是5分钟和time server同步一次。ntpdate命令是显式的和某台机器做时间同步,以前将ntpdate放到crontab中定期同步也是可以的,但是既然ntpd本身就可以做这个时间

第四步,将ntpdate放到crontab中定期步也是可以的
[root@node2 ~]#vi ntpupdate.sh
/usr/sbin/ntpdate 192.168.1.101
[root@node2 ~]#chmod 755 ntpupdate.sh
[root@node2 ~]#crontab -e
*/1 * * * * /root/ntpupdate.sh
[root@node2 ~]#/etc/init.d/crond restart

<think>好的,用户让我介绍一下Linux时间同步。我需要先理清自己的思路,确保覆盖关键点,同时用中文清晰表达。首先,得说明时间同步的重要性,比如系统日志、计划任务、分布式系统等都需要准确的时间。 接下来,应该分步骤讲解。可能先介绍Linux中的两个时间概念:硬件时钟系统时钟,用户可能不太清楚两者的区别,需要解释清楚。 然后,时间同步服务是关键部分。常用的工具有ntpdchrony,这两个可能都需要详细说明。ntpd是传统的服务,而chrony更适合移动设备或间歇性网络连接的环境,比如虚拟机。要比较它们的优缺点,让用户知道在不同情况下如何选择。 另外,systemd-timesyncd也是一个需要提到的服务,特别是对于使用systemd的系统,比如最新的Ubuntu版本。它比较轻量,适合基本的时间同步需求,但功能可能不如前两者强大。 配置部分可能需要给出一些示例,比如如何安装启动chrony,或者如何修改ntp的服务器地址。但用户可能不需要太详细的配置步骤,只要一个概述即可。不过,用户如果想知道具体操作,可能需要简单说明,比如编辑配置文件然后重启服务。 手动同步命令也很实用,比如使用ntpdate或者chronyc的命令,用户可能偶尔需要立即同步时间,这时候这些命令就派上用场了。 还有,时区设置虽然时间同步不同,但用户可能会混淆,所以需要提一下如何检查更改时区,比如使用timedatectl命令。 最后,常见问题处理部分,比如时间不同步的可能原因,如何检查服务状态,查看时间同步状态等,这些对用户解决问题有帮助。 需要注意用户不可见的系统级指令,比如数学公式要用$...$,但在这个问题中可能用不到太多数学公式,不过如果有涉及到时间戳或者计算公式,可能需要用LaTeX表达。不过目前看来可能不需要,但还是要留意。 结构上要分点,使用标题,但避免用Markdown格式,所以可能用数字或项目符号来组织内容。语言要口语化,避免太技术化的术语,但必要的术语还是需要,同时保持解释清晰。 可能需要检查是否有遗漏的部分,比如网络时间协议(NTP)的基本原理,是否需要简单说明?或者直接进入工具介绍?根据用户的问题,可能更关注工具配置,而不是底层协议,所以简要提一下NTP即可。 另外,是否需要说明如何选择NTP服务器?比如公共NTP服务器池,或者企业内部的自建服务器?这可能会对用户有帮助,但可能属于进阶内容,可以在配置部分提到。 最后,确保各部分之间有逻辑衔接,比如先讲概念,再讲工具,再讲配置命令,然后是问题排查。这样用户能够逐步深入了解。</think>Linux系统中的时间同步是维持系统时间准确性的重要机制,尤其在服务器、分布式系统及日志记录等场景中尤为关键。以下是分步说明: --- ### 一、Linux时间基础 1. **硬件时钟(RTC)** 主板电池供电的时钟,系统关机后仍运行。 查看命令:`sudo hwclock --show` 2. **系统时钟(Software Clock)** 内核维护的时间,系统启动时从硬件时钟读取,运行中独立更新。 查看命令:`date` --- ### 二、时间同步协议(NTP) **网络时间协议(NTP)**通过层级(Stratum)同步时间: - Stratum 0:原子钟/GPS时钟 - Stratum 1:直接连接Stratum 0的服务器 - Stratum 2:从Stratum 1同步的服务器 --- ### 三、时间同步工具 #### 1. **systemd-timesyncd(轻量级)** - 适用场景:桌面或简单服务器 - 配置文件:`/etc/systemd/timesyncd.conf` - 操作命令: ```bash timedatectl status # 查看同步状态 sudo timedatectl set-ntp true # 启用服务 ``` #### 2. **ntpd(传统方案)** - 适用场景:稳定性优先的服务器 - 安装与配置: ```bash sudo apt install ntp # Debian/Ubuntu sudo yum install ntp # CentOS/RHEL ``` - 配置文件:`/etc/ntp.conf`(可指定NTP服务器,如`pool cn.pool.ntp.org iburst`) - 管理命令: ```bash sudo systemctl restart ntp # 重启服务 ntpq -p # 查看同步状态 ``` #### 3. **chrony(现代方案)** - 适用场景:网络不稳定环境(如虚拟机) - 安装与配置: ```bash sudo apt install chrony # Debian/Ubuntu sudo yum install chrony # CentOS/RHEL ``` - 配置文件:`/etc/chrony/chrony.conf` 或 `/etc/chrony.conf` - 管理命令: ```bash chronyc tracking # 查看时间偏移 chronyc sources -v # 列出同步源 sudo chronyc makestep # 强制立即同步 ``` --- ### 四、手动同步操作 1. **临时同步(无需服务)** ```bash sudo ntpdate pool.ntp.org # 使用ntpdate命令 sudo chronyc -a makestep # chrony强制同步 ``` 2. **修改时区** ```bash timedatectl list-timezones | grep Shanghai # 查找时区 sudo timedatectl set-timezone Asia/Shanghai # 设置时区 ``` --- ### 五、常见问题排查 1. **时间不同步的可能原因** - 防火墙阻塞NTP端口(UDP 123) - 配置文件中NTP服务器地址错误 - 系统时区设置错误 2. **检查时间同步状态** ```bash timedatectl # 查看时间概况 journalctl -u chronyd # 查看chrony日志 chronyc tracking | grep "Leap status" # 检查闰秒状态 ``` --- ### 六、方案选择建议 - **简单场景**:优先使用`systemd-timesyncd` - **稳定性要求高**:选择`ntpd` - **网络波动大**:推荐`chrony` 通过合理配置时间同步,可避免日志错乱、证书验证失败等问题,确保系统稳定运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值