Linux系统下的时区配置管理 | 8月更文挑战

1,189 阅读1分钟

这是我参与8月更文挑战的第31天,活动详情查看:8月更文挑战

时区

Linux系统关于时区的配置有两种方式:

  1. 通过配置/etc/localtime和/etc/timezone文件。
  2. 通过配置TZ环境变量。

两种方式都可以达到配置时区的目的,下面分别说明一下这两种方式的使用方式。

系统时区

/etc/localtime用于配置系统时区,即,系统中其他任何需要时区参数的应用都可以通过localtime来获取时区信息,localtime一般为/usr/share/timezone/下某一时区配置文件的软链接,/usr/share/timezone为时区数据库,里面包含世界所有时区的配置信息。比如,我们中国一般使用的时区为:东八区,即Shanghai所在的时区,所以,localtime的配置方式为:

$ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

/etc/timezone用于提供系统时区的名称的,如果使用Shanghai时区的话,这里需要配置成如下内容:

$ echo 'Asia/Shanghai' >/etc/timezone

date命令在配置时间的时候,会参考/etc/localtime文件的时区配置,从而将系统时间配置正确。

$ date -s "2021-04-07 20:00:00

TZ环境变量

可以通过声明环境变量TZ的方式,来配置时区,比如: $ export TZ='Asia/Shanghai'

date在配置系统时间的时候,也会读取TZ的配置,从而正确的配置系统时间。这里需要注意的是,TZ的配置优先级高于/etc/localtime的配置,即,应用优先读取TZ的时区配置,如果TZ没有配置,再去读取/etc/localtime的配置。

对于只配置了TZ环境变量的系统来说,这里有一点,需要注意,如果应用程序没有设置TZ环境变量的话,那么该应用在配置系统时间时,就会出现问题。所以,如果发现系统时间的时区不正确时,可以通过读取应用的TZ环境变量的配置,来确定问题。