Linux日期管理,详细介绍使用timedatectl控制系统日期、时间和时区

这篇Linux指南将向你展示如何使用timedatectl命令来设置系统的日期、时间和时区。

timedatectl-command-Thumbnail.png

timedatectl命令是一个有用的工具,几乎在所有使用systemd的Linux发行版上都可以使用,这些发行版包括 Debian、Ubuntu、Fedora 和 CentOS。使用这个工具,你可以控制当前的时区、日期和时间。你甚至可以用它来启用与远程NTP服务器的自动时间同步。此外,当您使用timedatectl设置时间时,它还将重新配置任何连接到您的系统的实时时钟(RTC)以使用正确的时间。

本指南将教您如何使用timedatectl来设置设备的时间和日期,配置时区,并设置网络时间同步。

使用timedatectl获取当前时间设置

使用timedatectl非常简单。要检索我们当前的时间状态,可以使用以下命令。

timedatectl

通过使用该命令,会看到当前时间设置的信息。这个命令为我们提供了本地时间、世界时间、RTC时间(如果有的话)以及我们当前定义的时区。它还为我们提供了timedatectl命令的一些功能状态,如时间同步状态。

timedatectl
               Local time: Mon 2020-09-07 06:06:59 BST
           Universal time: Mon 2020-09-07 05:06:59 UTC
                 RTC time: n/a
                Time zone: Europe/London (BST, +0100)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

在Linux上使用timedatectl设置本地时区

在本节中,我们将向您展示如何使用timedatectl命令来改变系统的时区。你将学习如何使用命令list-timezones功能来找到你的时区并设置它。

1. 在我们开始之前,你需要计算出你要设置的时区。

您可以通过运行以下命令使用timedatectl命令来列出所有可用的时区。请注意,这个命令会返回一个庞大的列表。在下一步,我们将向您展示缩小列表范围的方法。

timedatectl list-timezones

由此,你会发现,一个时区可能有九个不同的区域可以归类。这些区域如下:

Africa/
America/
Antartica/
Asia/
Atlantic/
Australia/
Europe/
Indian/
Pacific/

2. 如果这个列表很难找到你的特定时区,我们可以使用grep来缩小列表。

我们将使用管道(|)把timedatectl命令的结果传递给grep命令。这样grep就可以过滤我们的列表。例如,可以通过这个命令获得属于Australia地区的所有时区。

要将范围缩小到不同的地区,你只需要替换 “Australia/”的文字即可。

timedatectl list-timezones | grep "Australia/"

例如,使用这个命令,可以得到一个更容易管理的列表,如下图所示。

Australia/Adelaide
Australia/Brisbane
Australia/Broken_Hill
Australia/Currie
Australia/Darwin
Australia/Eucla
Australia/Hobart
Australia/Lindeman
Australia/Lord_Howe
Australia/Melbourne
Australia/Perth
Australia/Sydney

3. 时区准备好了,现在可以用timedatectl命令set-timezone功能来设置。需要做的就是使用下面的语法,其中 “TIMEZONE “被替换成你选择的时区。由于我们正在更改系统设置,您需要拥有超级用户权限才能执行此操作。

timedatectl set-timezone "TIMEZONE"

例如,如果想把时区改为 “Australia/Hobart“,可以使用以下命令。

sudo timedatectl set-timezone "Australia/Hobart"

4. 可以再次使用timedatectl命令来验证这一变化是否生效。

你应该看到你的新时区是由命令返回的。

timedatectl
               Local time: Mon 2020-09-07 15:35:47 AEST
           Universal time: Mon 2020-09-07 05:35:47 UTC
                 RTC time: n/a
                Time zone: Australia/Hobart (AEST, +1000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

在Linux中使用timedatectl设置时间和日期

下一步要学习如何使用timedatectl命令来具体设置时间和日期。

在Linux中设置本地时间

首先,让我们看看如何使用timedatectl来设置基于Linux系统的本地时间。

1. 设置时间时,需要利用以下时间格式,时、分,然后是秒。这些数字都需要使用24小时的时间格式。所以下午1点应该写成小时的数字13。需要用冒号(:)来分隔每个数字。

HH:MM:SS

例如,如果我们用这种格式使用时间3:50 PM(15:50),我们最终会得到以下结果。

15:50:00

2. 在时间格式正确的情况下,我们现在可以将系统时钟设置为它。

要设置时间,我们可以利用timedatectl的 “set-time “参数,然后再设置时间。

timedatectl set-time HH:MM:SS

例如,如果我们要插入上一步的示例时间,该命令的结果将是我们的下面。

由于我们正在调整一个系统设置,你需要确保你以超级用户的权限运行这个命令。

sudo timedatectl set-time 15:50:00

3. 你可以在不指定选项的情况下,通过运行timedatectl来验证这个时间变化。

在Linux中设置日期

由于有了timedatectl实用程序,设置日期也变得相对容易。

和时间一样,你在这里需要知道的是该工具对你的日期所期望的格式。

1. timedatectl命令期望的日期格式是年,然后是月,然后是日。

月和日期需要用两位数系统来指定。例如,月份的第二天将写成02而不是2。

日期字符串的每一部分都需要用连字符(-)来分隔。

下面你可以看到timedatectl对日期的基本语法。

YYYY-MM-DD

以下是一个正确值的例子。

2020-09-07

2. 有了日期,我们就可以使用timedatectl的设置时间功能来设置日期。

你可能已经注意到了,这和我们设置时间时使用的参数是一样的,不过不用担心,由于格式上的差异,这个命令很聪明,可以计算出我们的日期。

timedatectl set-time YYYY-MM-DD

你可以通过查看下面的例子来了解这个命令的有效使用。

sudo timedatectl set-time 2020-09-07

3. 你可以在没有任何参数的情况下运行timedatectl来验证日期是否已经在Linux设备上成功更新。

在Linux中设置时间和日期

可以将前面两个部分合二为一,即可以同时设置时间和日期。

由于你现在应该熟悉时间和日期的格式,timedatectl命令设置时间和日期应该是轻而易举的。

下面你可以看到当你同时指定时间和日期时,命令所期望的语法。

由于空格的存在,我们需要将时间和日期用双引号包起来。

timedatectl set-time "YYYY-MM-DD HH:MM:SS"

如果我们把前面两节中使用的日期和时间两个例子结合起来,我们最终会得到下面这样的命令。

sudo timedatectl set-time "2020-09-07 15:50:00"

在Linux中配置RTC硬件时钟

timedatectl命令会自动将RTC硬件更新为正确的时间。默认情况下,这意味着它将更新时间到UTC的等效时间。

使用 UTC 时间是实时时钟的推荐行为。然而,也可以改变它,使它使用你的本地时间。

要改变你的RTC为使用当地时间,你可以使用以下命令。

timedatectl set-local-rtc 1

同样的,你也可以使用这个命令将timedatectl切换为设置RTC的UTC时间。

timedatectl set-local-rtc 0

在Linux上使用NTP与互联网同步时间。

在本节中,我们将向您展示如何将系统时钟与NTP服务器同步。

NTP是网络时间协议的缩写,是两个设备之间同步时间的标准。它已经成为现代计算的一个重要组成部分。对于完全缺乏实时时钟的设备,如树莓派,它是至关重要的。

像NTP池项目这样的小组提供了访问这些服务器的简单方法。被纳入这些池子的服务器必须有准确的时间,以便从以下地方进行同步:

1. 在继续之前,你需要确保你的操作系统上已经安装了实现ntp的软件包。

ntp包应该可以通过几乎所有操作系统的仓库进行安装。

如果您使用的发行版使用apt软件包管理器,您可以通过运行以下命令安装ntp软件包。RHE、SUSE和CentOS使用Chrony,它实现了NTP协议。

sudo apt install ntp

2. 幸运的是,当使用timedatectl命令时,启用NTP时间同步是一个简单的过程。

我们需要使用timedatectl命令的 “set-ntp “函数来开启同步。我们需要做的就是像下面这样给这个函数传入true。

sudo timedatectl set-ntp true

如果你决定不希望你的时间与互联网同步,你可以关闭这个功能。

sudo timedatectL set-ntp false

3. 启用NTP后,您的设备现在应该开始自动与服务器同步时间。

您可以在不使用任何参数的情况下运行timedatectl命令来验证它是否已经启用。到了这个阶段,你现在应该对如何在Linux设备上使用timedatectl命令有了很好的了解。我们向您介绍了如何设置Linux设备的时间、日期和时区。我们还向您展示了使用该命令时如何轻松地启用时间同步。如果您有任何反馈或遇到任何麻烦,请在下面留言。

平均: 5 / 5. votes: 1

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » Linux日期管理,详细介绍使用timedatectl控制系统日期、时间和时区

赞 (1)

评论

4+3=