LFCA:学习在 Linux 中管理时间和日期 – 第 6 部分
本文是 LFCA 系列的第 6 部分,在这一部分中,您将熟悉管理 Linux 系统中的时间和日期设置的常规系统管理命令。
时间对于任何 Linux 系统来说都是至关重要的。多种服务(例如 crontab、anacron、备份和恢复服务)依赖于准确的时间来按预期执行其任务。
Linux 有两种类型的时钟:
- 硬件时钟 – 这是电池供电的时钟,也称为 CMOS 时钟或RTC(实时时钟)。时钟独立于操作系统运行,并且即使在系统断电(只要有 CMOS 电池)时也能保持运行。
- 系统时钟(软件时钟)——这也称为内核时钟。在启动时,系统时钟从硬件时钟初始化并接管。
通常,两个时钟之间存在时间差,使得它们逐渐相互漂移。我们稍后会讨论这个问题,并向您展示如何同步这些时钟。
现在,我们将了解如何在 Linux 系统上检查时间和日期。
检查 Linux 系统上的时间和日期
有两个主要实用程序用于检查 Linux 系统上的时间和日期。第一个是日期命令。没有任何参数,它提供了相当多的信息
date
Friday 26 March 2021 11:15:39 AM IST
要仅以 dd-mm-yy 时间格式查看日期,请执行以下命令:
date +"%d-%m-%y"
26-03-21
如果您只想查看当前时间而不想查看其他内容,请使用以下命令:
date "+%T"
11:17:11
timedatectl 命令是现代 Linux 系统(例如 Ubuntu 18.04、RHEL 8 和 CentOS 8)中使用的新实用程序。它取代了在旧的 SysVinit 系统中很重要的日期命令。它可以用来查询和调整Linux系统上的时间。
如果没有任何选项,timedatectl 命令会打印出一系列信息,例如本地时间、UTC 时间、RTC 时间和时区等等。
timedatectl
如何在 Linux 系统上设置时区
在 Linux 系统上,时间取决于设置的时区。要检查系统上配置的时区,请发出以下命令:
timedatectl | grep Time
从上面代码片段的输出来看,我位于非洲/内罗毕时区。要查看可用时区,请运行以下命令:
timedatectl list-timezones
按ENTER滚动浏览可能可用的时区的整个列表。
时区也在 /usr/share/zoneinfo/ 路径中定义,如图所示。
ls /usr/share/zoneinfo/
您可以使用多种方法来配置时区。使用 timedatectl 命令,您可以使用所示语法将时区设置为 America/Chicago。
timedatectl set-timezone 'America/Chicago'
设置时区的另一种方法是从 /usr/share/zoneinfo 路径中的时区文件创建到 /etc/localtime 的符号链接。例如,要将本地时区设置为 EST(东部标准时间),请发出以下命令:
sudo ln -sf /usr/share/zoneinfo/EST /etc/localtime
在 Linux 系统上设置日期和时间
要仅在 Linux 系统上使用 HH:MM:SS(时:分:秒)格式设置时间,请使用以下语法
timedatectl set-time 18:30:45
要仅以 YY-MM-DD(年:月:日)格式设置日期,请使用以下语法:
timedatectl set-time 20201020
要设置日期和时间,请运行:
timedatectl set-time '2020-10-20 18:30:45'
注意:不建议以这种方式手动设置时间和日期,因为您可能会配置不准确的时间和日期设置。事实上,默认情况下,自动时间同步处于打开状态,以防止您进行手动时间和日期设置。
设置时间的最推荐方法是指定您所在的时区(如前所示)或打开与远程 NTP 服务器的自动时间同步。
使用 NTP 服务器设置自动时间同步
NTP 是网络时间协议的缩写,它是一种互联网协议,用于自动将系统时钟与在线 NTP 服务器上的时钟同步。
使用timedatectl命令,可以设置自动时间同步,如下:
timedatectl set-ntp true
要禁用自动 NTP 时间同步,请执行:
timedatectl set-ntp false
结论
timedatectl 和 date 命令是方便的命令行工具,可以帮助您检查和调整 Linux 上的时间。