1. 写在前面
timedatectl
命令是适用于 RHEL/CentOS 7/8 和 Fedora 30+ 的发行版的实用程序,它是 systemd 系统和服务管理器,替代基于 sysvinit 守护进程的 Linux 发行版中使用的旧传统 date 命令。
使用 timedatectl 命令可以查询和更改系统时钟的配置/设置,包括:设置或更改当前日期、时间和时区,或启用与远程 NTP 服务器自动同步系统时钟。
在本文中,将通过 timedatectl 命令从终端设置日期、时间、时区和与 NTP 同步时间,了解在 Linux 系统上管理时间的方法。
在 Linux 服务器或系统上保持正确的时间是一种良好的做法,可以带来以下好处:
-
保持系统任务及时运行,因为 Linux 中的大多数任务都受时间控制;
-
记录系统事件(日志)和其他信息的正确时间等等;
2. 如何在 Linux 中查找和设置本地时区?
(1)要显示系统当前的时间和日期,请在命令行中使用 timedatectl 命令,如下所示:
root@dev:~# timedatectl status
--------------------------------------------------------------------------------------
Local time: Thu 2024-02-15 15:57:43 CST
Universal time: Thu 2024-02-15 07:57:43 UTC
RTC time: Thu 2024-02-15 07:57:44
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
如上输出,RTC 时间是硬件时钟时间。
(2)Linux 系统时间基本是通过系统上设置的时区来管理的,要查看当前时区,如下所示:
root@dev:~# timedatectl
--------------------------------------------------------------------------------------
Local time: Thu 2024-02-15 16:00:19 CST
Universal time: Thu 2024-02-15 08:00:19 UTC
RTC time: Thu 2024-02-15 08:00:20
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
或:
root@dev:~# timedatectl | grep Time
--------------------------------------------------------------------------------------
Time zone: Asia/Shanghai (CST, +0800)
(3)要查看所有可用时区,如下所示:
root@dev:~# timedatectl list-timezones
--------------------------------------------------------------------------------------
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
... ...
(4)根据所在的位置查找当地时区,如下所示:
root@dev:~# timedatectl list-timezones | egrep -o "Asia/S.*"
--------------------------------------------------------------------------------------
Asia/Sakhalin
Asia/Samarkand
Asia/Seoul
Asia/Shanghai
Asia/Singapore
Asia/Srednekolymsk
(5)在 Linux 中设置本地时区,使用 set-timezone 选项,如下所示:
root@dev:~# timedatectl set-timezone "Asia/Seoul"
root@dev:~# timedatectl | grep Time
--------------------------------------------------------------------------------------
Time zone: Asia/Seoul (KST, +0900)
始终建议使用和设置协调世界时 (UTC)。
root@dev:~# timedatectl set-timezone UTC
root@dev:~# timedatectl | grep Time
--------------------------------------------------------------------------------------
Time zone: UTC (UTC, +0000)
注意:需要键入正确的时区名称,否则在更改时区时可能会出错,在下面的示例中,时区 “Asia/Shanghaiss”不正确,导致出错。
root@dev:~# timedatectl set-timezone "Asia/Shanghaiss"
--------------------------------------------------------------------------------------
Failed to set time zone: Invalid time zone 'Asia/Shanghaiss'
3. 如何在 Linux 中设置时间和日期?
可以使用 timedatectl 命令设置系统的日期和时间,如下所示:
3.1 在 Linux 中设置时间
如果只想设置时间,可以使用 set-time 选项,同时使用 HH:MM:SS(时、分、秒)的时间格式。
root@dev:~# timedatectl set-time 15:58:30
--------------------------------------------------------------------------------------
Failed to set time: Automatic time synchronization is enabled
# 关闭 ntp 时间同步
root@dev:~# timedatectl set-ntp no
# 设置时间
root@dev:~# timedatectl set-time 15:58:30
root@dev:~# timedatectl
--------------------------------------------------------------------------------------
Local time: Thu 2024-02-15 15:58:37 CST
Universal time: Thu 2024-02-15 07:58:37 UTC
RTC time: Thu 2024-02-15 07:58:37
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
systemd-timesyncd.service active: no
RTC in local TZ: no
如上所示,设置日期时可能会出现以下错误:
Failed to set time: Automatic time synchronization is enabled
关闭 ntp 时间同步即可。
恢复 ntp 同步:timedatectl set-ntp yes
3.2 在 Linux 中设置日期和时间
要设置日期和时间,可以使用 set-time 选项以及 YY:MM:DD (年、月、日)格式的日期和 HH:MM:SS (时、分、秒)格式的时间。
root@dev:~# timedatectl set-time '2015-11-20 16:14:50'
root@dev:~# date
--------------------------------------------------------------------------------------
Fri Nov 20 16:14:52 CST 2015
或者 也可单独设置日期:
timedatectl set-time 2015-11-20
4. 如何在 Linux 中查找和设置硬件时钟?
要将硬件时钟设置为协调世界时(UTC),使用 set-local-rtc 选项(布尔值):
查看硬件时钟是否设置为本地时区:
root@dev:~# timedatectl | grep local
--------------------------------------------------------------------------------------
RTC in local TZ: no
将硬件时钟设置为本地时区:
root@dev:~# timedatectl set-local-rtc 1
root@dev:~# timedatectl | grep local
--------------------------------------------------------------------------------------
RTC in local TZ: yes
将硬件时钟设置为协调世界时 (UTC):
root@dev:~# timedatectl set-local-rtc 0
root@dev:~# timedatectl | grep local
--------------------------------------------------------------------------------------
RTC in local TZ: no
5. 用远程 NTP 服务器同步 Linux 系统时钟
NTP 是网络时间协议(Network Time Protocol)的缩写,是一种互联网协议,用于同步计算机之间的系统时钟。通过 timedatectl 程序,可以使用 NTP 自动将 Linux 系统时钟与一组远程服务器同步。
注意: 必须在系统上安装 NTP,才能启用与 NTP 服务器的自动时间同步。
要启动与远程 NTP 服务器的自动时间同步,如下所示:
timedatectl set-ntp true
要禁用 NTP 时间同步,如下所示:
timedatectl set-ntp false
6. 总结
本文描述的示例非常简单,希望对你设置各种 Linux 系统时钟和时区有所帮助。要了解有关该工具的更多信息,请访问 “timedatectl man” 页面。
感谢您花时间阅读文章!
收藏本站不迷路!
原文始发于微信公众号(滑翔的纸飞机):如何使用 timedatectl 命令设置时间、时区并同步系统时钟?
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/260788.html