对于部署在海外的Linux服务器来说,拿到的机器时区和本地并不一样,导致运行在上面的应用也面临时区问题。所以有必要修改系统本地时区。

0x00:查看时区
查看当前生效的时区,可以简单的通过date命令查看当前时间:

[root@shuai01 zoneinfo]# date -R
Tue, 17 Jan 2017 21:36:23 +0800
最后的+0800,即东8区。

0x01:设置时区
tzselect命令
看起来很像一个时区选择的工具,但并非如此。事实上tzselect仅仅是一个查看时区表示方式的『向导』程序而已。通过依次询问大洲→国家→城市,最后告诉你如何TZ变量的写法,比如北京时间是:Asia/Shanghai

TZ变量
可以通过修改TZ变量,直接修改时区信息,比如:

[root@shuai01 ~]# date -R
 Tue, 17 Jan 2017 13:57:06 +0000
 [root@shuai01 ~]# export  TZ='Asia/Urumqi'
 [root@shuai01 ~]# date -R
 Tue, 17 Jan 2017 19:57:18 +0600


有Linux经验的小伙伴都知道,不写在文件里的设置更改很难生效一般是会话级的,重新登录会消失。所以,这 样直接修改TZ的绝对做不到持久化更改时区的。

正确的方式是到/etc/profile里(或用户的.profile或.bashrc文件),直接export TZ变量为要更改的时区(时区的名字可以用tzselect向导来确定)

/etc/localtime文件
默认情况下情况下,TZ属性是空,这时候是靠/etc/localtime文件来确定的时区。而此文件通常又是一个到/usr/share/zoneinfo/下各种时区文件的软连接。通过修改/etc/localtime指向的软连接,进而修改系统的时区。比如下面的方法,将localtime文件设置为了北京时间:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

0x02:总结
tzselect命令无法修改时区,仅给出时区的城市表示法
TZ变量和/etc/localtime文件会影响时区,并建议直接修改/etc/localtime文件。
如果在shell中临时需要变更时区信息,可以修改TZ变量实现。
在profile文件里设置变量TZ,达到和修改/etc/localtime类似的效果。
————————————————
版权声明:本文为CSDN博主「qq_38778137」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38778137/article/details/84896150

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐