如何永久重置 Debian 中的时区?

如何永久重置 Debian 中的时区?

Dreamhost 似乎认为我们喜欢 PDT,尽管我们身处中西部。如何更改时区?

答案1

我发现一个更容易使用的工具是dpkg-reconfigure。使用:

sudo dpkg-reconfigure tzdata

您将获得多种选择,其中包括一些未包含在内tzselect

答案2

对于 OP 来说这可能有点晚了,而更多的是针对到达此处的其他搜索者。

如果你需要非交互式解决方案,请尝试以下解决方案使用 dpkg-reconfigure tzdata 和 debconf-set-selections 更改时区

echo "Europe/Zurich" > /etc/timezone 
dpkg-reconfigure -f noninteractive tzdata

您可以通过查看 /usr/share/zoneinfo 来找出您的时区。实际上,上面的 dpkg-reconfigure 命令会将相应的文件从那里复制到 /etc/localtime。我以前只是手动执行此操作,而且似乎效果很好。

如果长时间运行的进程没有捕捉到变化,不要太惊讶。例如,Apache 日志时间戳浮现在脑海中。考虑一下这是否重要,以及是否需要重新启动正在运行的进程甚至重新启动。

答案3

要在较新的 Debian 和 Ubuntu 版本(Stretch/Xenial 等)上以非交互方式编辑它,您/etc/localtime也需要将其删除,否则/etc/timezone将被覆盖。

echo 'Europe/Zurich' > /etc/timezone 
rm /etc/localtime
dpkg-reconfigure -f noninteractive tzdata

此答案基于 mc0e 的答案。我无法以我的声誉添加评论。

答案4

总结

echo "TZ=Etc/UTC" >> /etc/environment
tzconfig

Etc/UTC您使用 找到的首选时区在哪里tzselect

更长的版本

当你使用

dpkg-reconfigure tzdata

重启后,时区信息不会保留。您可以使用以下命令验证设置

diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`

如果你只更新/etc/timezone,更新将与不一致/etc/localtime,因此最好执行

tzconfig

用于tzselect找出实际存在的时区(或者只是浏览/usr/share/zoneinfo目录)。

在 POSIX 系统中,TZ应该优先于/etc/localtime

export TZ='Europe/Berlin'
$ date
Tue Apr 10 08:51:03 CEST 2018
export TZ='Pacific/Efate'
$ date
Tue Apr 10 18:28:33 +11 2018

直接使用TZ 可以节省很多系统调用因为经常使用的日期/时间相关函数每次程序请求当前日期时都必须访问文件系统。这是一个微优化,但相当简单。

相关内容