1.显示当前的日期和时间:
date
2.以指定格式显示日期和时间:
date +"%Y-%m-%d %H:%M:%S"
上述命令将以 2024-01-13 10:46:16 的格式显示当前日期和时间。
3.设置系统时间为指定时间:
date --set="2024-01-01 00:00:00"
4.将系统时间与网络时间同步:
ntpdate ntp.aliyun.com
构建和使用 NTP(Network Time Protocol)有助于确保计算机系统和设备的时间同步,并可确保网络中各个设备的时间保持一致。以下是构建和使用 NTP 的基本步骤:
需求场景:
局域网内,将一台Centos7服务器,作为时间服务器,配置为NTP服务端,其他机器为客户端通过本地网络与之同步时间。
一、安装前准备
1、关闭SELinux服务
# 关闭SELinux临时生效
[root@server01 ~]# setenforce 0
# 永久关闭SELinux(需重启生效)
[root@server01 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
2、配置防火墙
1)关闭防火墙并禁止开机启动:
# 停止Firewall服务
[root@server01 ~]# systemctl stop firewalld
# 禁止Firewall服务开机启动
[root@server01 ~]# systemctl disable firewalld
# 2)或者仅放行NTP服务端口:
# 添加NTP服务的UDP端口123到public区域,并设置为永久生效
[root@server01 ~]# firewall-cmd --add-port=123/udp --permanent
# 重新载入防火墙规则以使更改生效
[root@server01 ~]# firewall-cmd --reload
二、安装NTP服务
1、查询是否已安装
[root@server01 ~]# rpm -qa | grep ntp
如果输出包含ntp和ntpdate,则说明已经安装NTP服务。如果只有一个包被安装,建议卸载后重新安装。使用命令rpm -e xxx卸载。
2、YUM安装
[root@server01 ~]# yum install ntp ntpdate -y
三、修改NTP配置文件
编辑/etc/ntp.conf文件。
[root@server01 ~]# vim /etc/ntp.conf
【服务端配置】
(一)时间服务器连接互联网
-----------------------------------------------------------
# 允许服务器使用本地系统上的时钟漂移文件
driftfile /var/lib/ntp/drift
# 设置默认的访问规则,允许同步但禁止修改、查询等操作
restrict default nomodify notrap nopeer noquery
# 允许本地网络的机器同步,但禁止修改、查询等操作
restrict 192.168.8.0 mask 255.255.255.0 nomodify notrap
# 允许本地主机同步,但禁止修改、查询等操作
restrict 127.0.0.1
restrict ::1
# 使用 ntp.aliyun.com 作为 NTP 服务器
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server ntp.aliyun.com
# 指定需要包含的密码文件(如果有)
includefile /etc/ntp/crypto/pw
# 指定包含密钥的文件路径
keys /etc/ntp/keys
# 禁用监控功能
disable monitor
-----------------------------------------------------------
说明:
服务器地址默认为centos.pool.ntp.org,上述配置中为 ntp.aliyun.com 。
四、启动NTP服务并设置自动启动
[root@server01 ~]# systemctl start ntpd
[root@server01 ~]# systemctl enable ntpd
[root@server01 ~]# systemctl daemon-reload
五、检查NTP服务器是否正常工作
运行以下命令检查NTP服务器是否正常工作:
[root@server01 ~]# ntpq -p
[root@server01 ~]# ntpstat
如果返回结果中有时间服务器,表示NTP服务器已经正常工作。
六、同步硬件时钟与系统时间
NTP服务默认配置下主要负责同步Linux系统的内核时间。然而,为了确保在系统重启后硬件时钟(CMOS/RTC)也能保持准确的时间,可以设置让ntpd服务同时同步硬件时钟。
编辑/etc/sysconfig/ntpd文件,并确认添加以下内容:
SYNC_HWCLOCK=yes
这样一来,在ntpd服务运行过程中,每当系统时间被NTP同步更新时,硬件时钟也会随之更新,确保两者保持一致。
此外,若需要手动将当前已同步的系统时间写入到硬件时钟中,可使用如下命令:hwclock -w
七、测试时间同步
[root@client01 ~]# date --set="2024-01-01 00:00:00"
[root@client01 ~]# date
# 测试同步,不改时间
[root@client01 ~]# ntpdate -d 192.168.8.31
# 同步时间
[root@client01 ~]# ntpdate 192.168.8.31
[root@client01 ~]# hwclock -w
[root@client01 ~]# date
Chrony
1.Chrony 是什么?
Chrony 是一个开源的 网络时间协议(NTP)实现,用于同步计算机系统的时钟,确保设备之间的时间一致性。它由荷兰计算机科学家 Richard P. Curnow 开发,最初用于替代传统的 ntpd(NTP Daemon),具有轻量、高效、灵活的特点,适用于各种规模的系统,从嵌入式设备到数据中心服务器集群。
1.1与 NTP 实现的对比(以 ntpd 为例)
特性 | Chrony | ntpd |
---|---|---|
同步速度 | 更快(尤其首次同步,支持 iburst ) |
较慢(依赖长期统计调整) |
资源占用 | 低(适合嵌入式/低功耗设备) | 较高(需维护大量历史数据) |
实时内核支持 | 支持(如 Linux 实时内核) | 有限支持 |
调整策略 | 渐进式+跳跃式(灵活) | 仅渐进式(需较长时间修正大偏差) |
配置复杂度 | 简单(配置文件语法更友好) | 相对复杂(需理解更多参数) |
1.2优势总结
- 轻量高效:适合资源受限环境,性能优于传统
ntpd
。 - 快速收敛:通过
iburst
和智能调整策略,缩短首次同步时间。 - 灵活可靠:支持多时间源、动态网络适配,适应复杂网络环境。
- 安全可控:内置认证和访问控制,满足企业级安全需求。
2.安装Chrony
使用yum
安装Chrony。
yum install -y chrony
2.1配置Chrony
Chrony的主要配置文件是/etc/chrony.conf
,你可以使用vim
或者其他文本编辑器来编辑它。
2.1.1 设定NTP服务器
你可以选用国内的NTP服务器,例如阿里云、腾讯云的服务器,这样能提升时间同步的效率。
在配置文件里添加或者修改server
字段。
server ntp.aliyun.com iburst
server ntp.tencent.com iburst
iburst
选项的作用是,在首次同步或者连接丢失后重新同步时,快速发送多个NTP请求,从而加快同步的速度。
2.1.2 允许特定网段的客户端同步
若你想让局域网内的其他设备借助这台服务器进行时间同步,可在配置文件中添加allow
字段。
allow 192.168.8.0/24
此配置允许192.168.8.0/24
网段内的设备来同步时间。
2.1.3 其他配置参数
driftfile
:用于记录系统时钟漂移数据,默认路径为/var/lib/chrony/drift
。makestep
:当系统时钟与NTP服务器的时间偏差超过一定值时,允许时钟进行跳跃式调整。例如:
makestep 1.0 3
这意味着当时间偏差大于1秒时,最多进行3次跳跃式调整。
2.3 启动并设置Chrony服务
完成配置后,你需要启动Chrony服务,并且设置为开机自启。
systemctl start chronyd
systemctl enable chronyd
2.4 检查服务状态
你可以使用以下命令来检查Chrony服务是否正常运行。
systemctl status chronyd
若服务正常运行,输出中会显示active (running)
。
2.5. 验证时间同步
使用chronyc
命令来验证时间同步状态。
chronyc sources -v
该命令会显示Chrony当前使用的时间源及其状态。如果输出中某个服务器的状态为^*
,则表示当前正在使用该服务器进行时间同步。
你还可以使用以下命令查看时间同步的详细信息:
chronyc tracking
2.6 防火墙设置
如果你开启了防火墙,需要开放NTP服务使用的UDP 123端口。
firewall-cmd --add-service=ntp --permanent
firewall-cmd --reload
3.Linux 客户端
3.1 安装 Chrony
在客户端上打开终端,执行以下命令来安装 Chrony:
yum install -y chrony
3.2 配置客户端指向 Chrony 服务器
运用文本编辑器(如 vim
)打开客户端的 Chrony 配置文件 /etc/chrony.conf
,将服务器地址添加进去。
假定 Chrony 服务器的 IP 地址是 192.168.8.100
,配置如下:
server 192.168.8.100 iburst
iburst
选项的作用是在初始同步或重新同步时加速时间同步。
3. 启动并设置 Chrony 服务
完成配置后,启动 Chrony 服务并设置为开机自启:
systemctl start chronyd
systemctl enable chronyd
4. 验证时间同步
使用以下命令验证客户端是否成功同步时间:
chronyc sources -v
若输出结果中显示 ^*
指向你配置的服务器,就表明客户端正在从该服务器同步时间。