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


Answers:


73

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

sudo dpkg-reconfigure tzdata

您将获得多种选择,包括中没有的选择tzselect


以这种方式进行操作的好处是,您以可复制的方式进行操作,并限制了执行错误操作(例如放置不存在的时区)的机会。
Mogget

1
这是好东西,但是如果您需要非交互式(因此可编写脚本)选项,请参见下面的答案。
mc0e 2015年

14

对于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
请注意,要使其正常工作,这是一项/etc/localtime尚不存在的要求。如果存在,并且是的软链接/usr/share/zoneinfo/whatever,则将其作为基础,并进行/etc/localtime相应的更新,覆盖您的更改。
Multisync

11

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

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

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


3

TL; DR

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 可以节省许多系统调用,因为某些程序每次询问当前日期时,与日期/时间相关的常用功能都必须访问文件系统。这是一个微优化,但非常简单。


TZ在配置文件中积极导出会创建符号链接吗?根据我的经验,这听起来根本不对。也许您的意思是“还要确保创建符号链接...”?
上午

1
@amn不,那不会创建符号链接,我试图澄清这一点。但是$TZ变量是通过glibc函数读取的:gnu.org/software/libc/manual/html_node/TZ-Variable.html
Tombart

不是echo "TZ=Etc/UTC" >> /etc/environment吗?您缺少TZ=部分...(如果有人仍在运行古老的Debian版本)。此外,守护程序之类的非交互性内容仍将使用/etc/localtime版本而不是其中的一个版本TZ...
Matija Nalis

@MatijaNalis是的,您是对的。感谢您的指正!
Tombart
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.