使用 timedatectl 命令
timedatectl 工具作为 systemd
系统和服务管理器的一部分发布,可让您查看和更改系统时钟的配置。您可以使用此工具更改当前的日期和时间,设置时区,或者启用与远程服务器自动同步系统时钟。
显示当前日期和时间
要显示当前的日期和时间,以及有关系统和硬件时钟配置的详细信息,请在没有附加命令行选项的情况下运行 timedatectl
命令:
timedatectl
这会显示本地和通用时间、当前使用的时区、网络时间协议(NTP
)配置的状态,以及与 DST 相关的其他信息。
例 显示当前日期和时间
以下是一个不使用 NTP
将系统时钟与远程服务器同步的系统中 timedatectl
命令的输出示例:
~]$ timedatectl
Local time: Mon 2016-09-16 19:30:24 CEST
Universal time: Mon 2016-09-16 17:30:24 UTC
Timezone: Europe/Prague (CEST, +0200)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
Sun 2016-03-31 01:59:59 CET
Sun 2016-03-31 03:00:00 CEST
Next DST change: DST ends (the clock jumps one hour backwards) at
Sun 2016-10-27 02:59:59 CEST
Sun 2016-10-27 02:00:00 CET
timedatectl
不会立即注意到对 chrony
或 ntpd
状态的更改。如果更改了这些工具的配置或状态,请输入以下命令:
~]# systemctl restart systemd-timedated.service
更改当前时间
要更改当前时间,以 root
用户身份在 shell 提示符后输入以下内容:
timedatectl set-time HH:MM:SS
将 HH 替换为一小时,MM 替换为一分钟,SS 替换为秒,全部以两位数形式键入。
此命令同时更新系统时间和硬件时钟。结果类似于使用 date --set
和 hwclock --systohc
命令。
如果启用了 NTP
服务,该命令将失败。
例 更改当前时间
要将当前时间更改为 11:26,以 root
用户身份运行以下命令:
~]# timedatectl set-time 23:26:00
默认情况下,系统配置为使用 UTC。要将您的系统配置为在本地时间维护时钟,以 root
用户身份使用 set-local-rtc
选项运行 timedatectl
命令:
timedatectl set-local-rtc boolean
要将您的系统配置为在本地时间维护时钟,请将 布尔值 替换为 yes
(或者 y、y
、true
、t
或 1
)。要将系统配置为使用 UTC,请将 布尔值 替换为 no
(或者 n、n
、false
、f
或 0
)。默认选项为 no
。
更改当前日期
要更改当前日期,以 root
用户身份在 shell 提示符后输入以下内容:
timedatectl set-time YYYY-MM-DD
将 YYY 替换为四位数年,MM 替换为两位数月,DD 替换为每月的两位数。
请注意,在不指定当前时间的情况下更改日期会导致将时间设置为 00:00:00。
例 3.3. 更改当前日期
要将当前日期更改为 2017 年 6 月 2 日并保留当前时间(下午 11:26),以 root
用户身份运行以下命令:
~]# timedatectl set-time "2017-06-02 23:26:00"
更改时区
要列出所有可用时区,在 shell 提示符后输入以下内容:
timedatectl list-timezones
要更改当前使用的时区,以 root 用户身份输入
:
timedatectl set-timezone time_zone
使用 time datectl list-timezones 命令列出的任何值替换 time
_zone。
例 更改时区
要确定哪一个时区与您当前位置最接近,请使用 timedatectl
命令和 list-timezones
命令行选项。例如,要列出欧洲所有可用时区,请输入:
~]# timedatectl list-timezones | grep Europe
Europe/Amsterdam
Europe/Andorra
Europe/Athens
Europe/Belgrade
Europe/Berlin
Europe/Bratislava
…
要将时区更改为 欧洲/地区,
以 root 用户身份输入
:
~]# timedatectl set-timezone Europe/Prague
将系统时钟与远程服务器同步
与前面部分所述的手动调整不同,timedatectl
命令还允许您使用 NTP
协议自动与一组远程服务器同步系统时钟。启用 NTP 可启用 chronyd
或 ntpd
服务,具体取决于安装了哪些服务。
使用以下命令可以启用或禁用 NTP
服务:
timedatectl set-ntp boolean
要让您的系统能够将系统时钟与远程 NTP
服务器同步,请将 布尔值 替换为 yes
(默认选项)。要禁用此功能,请将 布尔值 替换为 no
。
例 将系统时钟与远程服务器同步
要启用与远程服务器自动同步系统时钟,请输入:
~]# timedatectl set-ntp yes
Chrony
1. 安装Chrony服务
在Red Hat系统中,您可以使用yum
包管理器来安装Chrony服务:
sudo yum install chrony
2. 配置Chrony服务
编辑Chrony的配置文件/etc/chrony.conf
,添加或修改以下内容:
# 允许所有客户端请求时间同步
allow all
# 设置服务器的stratum级别
local stratum 10
# 指定上游NTP服务器
server pool.ntp.org iburst
如果您希望服务器仅在内部网络中提供时间服务,可以将allow all
更改为指定的网络范围,例如:
allow 192.168.1.0/24
3. 启动Chrony服务
启动Chrony服务,并设置为开机启动:
sudo systemctl start chronyd
sudo systemctl enable chronyd
4. 检查Chrony服务状态
使用以下命令检查Chrony服务的状态:
sudo systemctl status chronyd
5. 同步时间
如果您的服务器时间不准确,可以使用以下命令强制同步时间:
sudo chronyc makestep
6. 配置防火墙
如果您的服务器运行了防火墙,确保UDP端口123是开放的,因为NTP使用这个端口进行通信:
sudo firewall-cmd --permanent --add-service=ntp
sudo firewall-cmd --reload
7. 其他客户端使用您的NTP服务器
其他客户端可以配置它们的NTP客户端软件,将您的服务器IP作为上游NTP服务器。例如,在/etc/ntp.conf
中添加:
server 你的服务器IP iburst
然后重启NTP服务:
sudo systemctl restart ntpd
或者对于使用Chrony的客户端:
sudo systemctl restart chronyd
确保您的服务器时间准确,并且网络配置允许外部访问(如果您希望提供公网服务)。如果您的服务器仅用于内部网络,确保内部网络的防火墙和路由器设置允许NTP流量到达您的服务器。
Comments NOTHING