如何在 Debian 9 上设置或更改时区

对于许多与系统相关的任务和流程,使用正确的时区非常重要。例如, cron 守护程序使用系统的时区执行 cron 作业,日志文件中的时间戳基于同一系统的时区。

系统的时区在安装期间设置,但可以在以后轻松更改。本教程介绍如何在 Debian 9 上设置或更改时区。

先决条件

您登录的用户必须具有 sudo 权限才能更改系统的时区。

检查当前时区

在 Debian 和其他现代 Linux 发行版中,您可以使用 timedatectl 命令显示和设置当前系统的时间和时区。

timedatectl

如下面的输出所示,系统的时区设置为 “America/Chicago”:

      Local time: Mon 2019-03-11 16:46:45 CDT
Universal time: Mon 2019-03-11 21:46:45 UTC
RTC time: Mon 2019-03-11 21:46:45
Time zone: America/Chicago (CDT, -0500)
Network time on: yes
NTP synchronized: no
RTC in local TZ: no

通过 /etc/localtime/usr/share/zoneinfo 目录中的二进制时区标识符的文件链接来配置系统时区。另外一个检查时区的方法是使用 ls 命令来显示符号链接指向的路径:

ls -l /etc/localtime
lrwxrwxrwx 1 root root 37 Jan 23 03:19 /etc/localtime -> ../usr/share/zoneinfo/America/Chicago

在 Debian 中更改时区

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

timedatectl list-timezones
...
Europe/Lisbon
Europe/Ljubljana
Europe/London
Europe/Luxembourg
Europe/Madrid
Europe/Malta
...

一旦您根据您的位置确定哪个时区后,请以 sudo 用户身份运行以下命令:

sudo timedatectl set-timezone your_time_zone

例如,要将系统的时区更改为 Europe/Ljubljana 请运行:

sudo timedatectl set-timezone Europe/Ljubljana

通过发出 timedatectl 命令验证更改:

timedatectl
      Local time: Mon 2019-03-11 22:51:27 CET
Universal time: Mon 2019-03-11 21:51:27 UTC
RTC time: Mon 2019-03-11 21:51:26
Time zone: Europe/Ljubljana (CET, +0100)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no

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

如果您运行的是较旧版本的 Debian ,并且系统上 timedatectl 没有该命令,则可以通过 /etc/localtime 链接到 /usr/share/zoneinfo 目录中的时区文件来更改时区 。

  1. 删除 /etc/localtime

    sudo rm -f /etc/localtime
  2. 确定要配置的时区并创建符号链接:

    sudo ln -s /usr/share/zoneinfo/Europe/Ljubljana /etc/localtime
  3. 通过列出 /etc/localtime 文件或使用 date 命令来确认更改:

    date
    Mon Mar 11 22:55:04 CET 2019

结论

在本指南中,您学习了如何更改 Debian 系统的时区。