时区是具有相同标准时间的地理区域。通常,时区是在操作系统的安装过程中设置的,但也可以在安装系统后修改改。

对于许多与系统相关的任务和进程,使用正确的时区至关重要。例如,cron守护程序使用系统的时区执行cron作业。时区也用于日志时间戳。

本教程介绍了在Linux中设置或更改时区的必要步骤。包括使用timedatectl命令检查当前时区,使用timedatectl命令更改Linux的时区,通过创建符号链接来更改时区。

检查当前时区

timedatectl是一个命令行程序,可让您查看和更改系统的时间和日期。它在所有基于systemd的现代Linux系统上都可用。要查看当前时区,请在不使用任何选项或参数的情况下调用timedatectl命令:

timedatectl
                      Local time: Tue 2019-12-03 16:30:44 UTC
                  Universal time: Tue 2019-12-03 16:30:44 UTC
                        RTC time: Tue 2019-12-03 16:30:44
                       Time zone: Etc/UTC (UTC, +0000)
       System clock synchronized: no
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

上面的输出显示系统的时区设置为UTC。配置系统时区是通过创建/etc/localtime/usr/share/zoneinfo目录中文件符号链接,通过该文件二进制时区标识符来设置。因此,你可以使用ls命令打印符号链接指向的路径,以下ls命令是查看系统时区:

ls -l /etc/localtime
lrwxrwxrwx 1 root root 27 Dec  3 16:29 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC

更改Linux的时区

在更改时区之前,您需要找出要使用的时区的长名称。时区命名约定通常使用“地区/城市”格式。要查看所有可用时区,请使用timedatectl命令或在/usr/share/zoneinfo目录使用ls命令列出文件

timedatectl list-timezones
...
America/Montserrat
America/Nassau
America/New_York
America/Nipigon
America/Nome
America/Noronha
...

确定哪个时区适合您的位置后,请以root或sudo用户运行以下命令:

sudo timedatectl set-timezone <your_time_zone>

例如,要将系统的时区更改为Asia/Shanghai,请输入:

sudo timedatectl set-timezone Asia/Shanghai

要验证更改,请再次调用timedatectl命令:

timedatectl
                      Local time: Tue 2019-12-03 13:55:09 EST
                  Universal time: Tue 2019-12-03 18:55:09 UTC
                        RTC time: Tue 2019-12-03 18:02:16
                       Time zone: America/New_York (EST, -0500)
       System clock synchronized: no
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

任务完成!您已成功更改系统的时区。

通过创建符号链接来更改时区

如果您正在运行较早的Linux发行版,并且系统上没有timedatectl命令,则可以通过更改符号链接文件/etc/localtime到/usr/share/zoneinfo目录中的时区文件,来更改时区。

首先删除当前/etc/localtime符号链接文件

sudo rm -rf /etc/localtime

确定要配置的时区,然后创建符号链接

sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime

通过调用date命令来验证它:

date

输出包含时区,在此示例中为“ EST”。

Tue Dec  3 14:10:54 EST 2019

结论

要在Linux系统中更改时区,请使用sudo timedatectl set-timezone命令,后跟要设置的时区的长名称。如有任何疑问,请随时发表评论。