timedatectl命令对于RHEL/CentOS 7和基于Fedora 21+的分布式系统来说,是一个新工具,它作为systemd系统和服务管理器的一部分,代替旧的传统的用在基于Linux分布式系统的sysvinit守护进程的date命令。
timedatectl命令可以查询和更改系统时钟和设置,可以使用此命令来设置或更改当前的日期,时间和时区,或实现与远程NTP服务器的自动系统时钟同步。
本文讲解如何使用timedatectl命令的NTP,设置date、time、timezone和synchronize time来管理时间。timedatectl具有以下优点:
1)维护及时操作的系统任务,因为在Linux中的大多数任务都是由时间来控制的
2)记录事件和系统上其它信息等的正确时间
时区查看及设置
(1)要显示系统的当前时间和日期,使用命令行中的timedatectl status命令,如下:
# timedatectl status
Warning: Ignoring the TZ variable. Reading the system's time zone setting only.
Local time: Wed 2020-09-09 05:57:17 UTC
Universal time: Wed 2020-09-09 05:57:17 UTC
RTC time: Wed 2020-09-09 05:57:17
Time zone: UTC (UTC, +0000)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
在上面的示例中,RTC time就是硬件时钟的时间。
(2)Linux系统上的time总是通过系统上的timezone设置的,要查看当前时区,按如下做:
# timedatectl
OR
# timedatectl | grep Time
(3)要查看所有可用的时区,运行以下命令:
# timedatectl list-timezones
(4)要根据地理位置找到本地的时区,运行以下命令:
# timedatectl list-timezones | egrep -o "’Asia/B.*"
# timedatectl list-timezones | egrep -o "Europe/L.*"
# timedatectl list-timezones | egrep -o "America/N.*"
(5)要在Linux中设置本地时区,使用set-timezone开关,如下所示。
# timedatectl set-timezone "Asia/Shanghai"
推荐使用和设置协调世界时,即UTC
# timedatectl set-timezone UTC
需要输入正确命名的时区,否者在改变时区的时候,可能会发生错误
日期及时间设置
(1)设置Linux中的时间。只设置时间的话,可以使用set-time开关以及HH:MM:SS(小时,分,秒)的时间格式
# timedatectl set-time 15:58:30
(2)在Linux中设置日期。只设置日期的话,可以使用set-time开关以及YYYY-MM-DD(年,月,日)的日期格式
# timedatectl set-time 2018-11-20
(3)设置日期和时间
# timedatectl set-time '16:10:50 2018-11-20'
如何在Linux中查找和设置硬件时钟
要设置硬件时钟以协调世界时UTC,可以使用set-local-rtc boolean-value选项
首先确定硬件时钟是否设置为本地时区:
# timedatectl | grep local
将硬件时钟设置为本地时区:
# timedatectl set-local-rtc 1
将硬件时钟设置为协调世界时(UTC):
# timedatectl set-local-rtc 0
将Linux系统时钟同步到远程NTP服务器
NTP即Network Time Protocol(网络时间协议),是一个互联网协议,用于同步计算机之间的系统时钟。timedatectl实用程序可以自动同步Linux系统时钟到使用NTP的远程服务器。
注意,必须在系统上安装NTP以实现与NTP服务器的自动时间同步。
要开始自动时间同步到远程NTP服务器,在终端键入以下命令:
# timedatectl set-ntp true
要禁用NTP时间同步,在终端键入以下命令:
# timedatectl set-ntp false




