【问题标题】:TZ Variable, custom fileTZ 变量,自定义文件
【发布时间】:2015-02-14 05:59:45
【问题描述】:

我有一个嵌入式系统,我们希望在其中创建自定义夏令时。

我可以通过设置TZ环境变量来实现,例如:export TZ=IST-2IDT,M3.4.4/26,M10.5.0

我们有几个守护进程正在运行(例如 daemonA、daemonB 等),如果其中一个导出 TZ,那么其他守护进程将无法看到它。所以这是个问题。一种可能的解决方法可能是使用文件而不是环境变量,以便“每个人”都可以看到它。

GNU C 库手册如下:

:characters Each operating system interprets this format differently; in the GNU C Library, characters is the name of a file which describes the time zone.

当我export TZ=:/etc/TZ,然后echo IST-2IDT,M3.4.4/26,M10.5.0 > /etc/TZ 时,它不起作用。当我发出date 命令时,我看到了这一点:

Mon Aug 15 04:19:36 /etc/TZ 2016

谁能给我点线索?

非常感谢!!

【问题讨论】:

    标签: linux timezone gnu


    【解决方案1】:

    诸如 /etc/TZ 之类的文件取决于系统的类型(称它们为 非标准,尽管这方面的标准化很差)。配置时区的常用方法是通过 /etc/localtime 文件。通常这些是由timezone compiler 从规则(文本)文件生成的。例如,它在 tzfile 手册页中。

    timezone-in-date 是开始进一步阅读的好地方 - 因为它提到了一些关于 /etc/TZ 的可能性。如果 /etc/TZ 对您的系统有效,则接受的答案指向此 Oracle page,它似乎记录了格式。

    【讨论】:

    • 嗨,托马斯。我正在使用 glibc。我做了一些研究,似乎 glibc/eglibc 不使用 /etc/TZ,而是像你说的那样使用 /etc/localtime。 /etc/localtime 方式有效,但不符合我的要求,因为在使用嵌入式板时,我需要能够在运行时创建自定义时区。 TZ 环境变量实现了这一点,但其他守护进程看不到它(如原帖中所述)。
    • 无论您是设置环境变量还是更新/etc/localtime,您都必须重新启动其他守护程序以使它们使用新的时区设置。
    猜你喜欢
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 2011-08-04
    • 2012-08-25
    • 2016-07-29
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    相关资源
    最近更新 更多