为什么我的时区更改不会反映在date命令中?

我将/ usr / share / zoneinfo / Asia / Kolkata复制到/ etc / localtime。 我也尝试在/ etc / sysconfig / clock中编辑ZONE,但是我的默认时区仍然是CEST,而不是IST。

我已经检查过,以确保TZvariables不覆盖它。

我已经GOOGLE了,发现http://www.redhat.com/advice/tips/timezone.html和http://kezhong.wordpress.com/2010/03/08/change-timezone-on-centos– 5-4 /但没有帮助。

我没有想法。 我究竟做错了什么?

[root@dhroid ~]$ cat /etc/sysconfig/clock ZONE="Asia/Kolkata" UTC=false ARC=false [root@dhroid ~]$ ls -al /etc/localtime lrwxrwxrwx 1 root root 32 Jul 19 16:10 /etc/localtime -> /usr/share/zoneinfo/Asia/Kolkata [root@dhroid ~]$ env | grep TZ [root@dhroid ~]$ date Tue Jul 19 16:11:52 CEST 2011 [root@dhroid ~]$ 

我已经解决了这个问题。 我所做的没有错。 一切都是正确的。 问题出在tzdata包被破坏了。 只要我用yum reinstall tzdata重新安装包装,它就起作用了!

在保存对文件的更改之后:'/ etc / sysconfig / clock'需要重新引导时区中的更改才能生效。 那你之后重新开箱吗?

我不是100%肯定的,但我相信,如果你有/ etc / sysconfig /时钟configuration

UTC = FALSE

那么你将无法dynamic地改变时区。

我所有的机器都设置为UTC true,而本地时区为america / los_angeles。 如果我将/ etc / localtime重新链接到不同的时区,它立即反映在'date'命令中。

如果系统时钟未locking到UTC,则系统不知道如何解释已更改的时区,因为它们都是相对于UTC的。 只有重新启动才会重置它的大脑。

编辑:所以我认为底线是,直到你已经configuration/ etc / sysconfig /时钟到UTC = true并重新启动(并重置您的BIOS时钟为utc),那么你坚持重新启动。

最近在Ubuntu上跑进了这个。 droid的答案给了我需要的提示。 由于具体步骤在Ubuntu / Debian上有所不同,所以创build一个新的答案。 通常我一直在设置时区:

 sudo mv /etc/localtime{,.bak} sudo ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime 

奇怪的是没有工作,所以我试图重新configurationtzdata:

 sudo dpkg-reconfigure tzdata 

得到这个奇怪的结果:

 Current default time zone: 'America/Los_Angeles' Local time is now: Wed Jul 6 20:10:37 UTC 2016. 

重新安装tzdata修复了它:( apt-get install用最新的replace现有的软件包)

 sudo apt-get install tzdata date etc. PDT 2016 

在这里find了一个适合我的答案(Ubuntu 14.04+): Linux中的时区设置[closures]

 $ sudo timedatectl set-timezone Etc/UTC 

我再次检查重新启动,它仍然存在。 希望这可以帮助别人:)