LFCA:学习在 Linux 中管理时间和日期 - 第 6 部分
本文是LFCA 系列的第 6 部分,在本部分中,您将熟悉常规系统管理命令,以管理 Linux 系统中的时间和日期设置。
时间在任何 Linux 系统中都至关重要。crontab、anacron、备份和恢复服务等多种服务都依赖于准确的时间来按预期执行任务。
Linux 有两种类型的时钟:
- 硬件时钟– 这是由电池供电的时钟,也称为 CMOS 时钟或RTC(实时时钟)。时钟独立于操作系统运行,并且即使系统关闭,只要有 CMOS 电池,它仍会继续运行。
- 系统时钟(软件时钟)——这也称为内核时钟。在启动时,系统时钟从硬件时钟初始化并接管。
通常,两个时钟之间存在时间差,因此它们会逐渐相互偏移。我们稍后会讨论这个问题,并向您展示如何同步这些时钟。
现在,我们将了解如何在 Linux 系统上检查时间和日期。
在 Linux 系统上检查时间和日期
Linux 系统上有两个主要实用程序用于检查时间和日期。第一个是date 命令。它无需任何参数,即可提供相当多的信息
$ 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系统中流行的date 命令的替代品。它可用于查询和调整 Linux 系统上的时间。
如果不带任何选项,timedatectl命令会打印出一系列信息,例如本地时间、UTC 时间、RTC 时间和时区等等。
$ timedatectl
如何在 Linux 系统上设置时区
在 Linux 系统上,时间取决于设置的时区。要检查系统上配置的时区,请发出以下命令:
$ timedatectl | grep Time
从上面代码片段的输出来看,我位于Africa/Nairobi时区。要查看可用的时区,请运行以下命令:
$ 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 上的时间。