Linux 时区怎么改:timedatectl 一行命令
先说结论
Linux 改时区就一行命令,不用改配置文件、不用重启:
timedatectl set-timezone Asia/Tokyo改完立即生效,再跑 date 验证一下,显示的时间就是新时区的了。
我踩过的一次:时区要按机器所在地设,不是按人所在地设
有一次我要给几台云服务器改时区。第一反应是"时区设为当地",顺手就把一台大阪的机器设成了 Asia/Shanghai——因为"当地"在我脑子里就是我所在的地方。
结果马上被纠正了:服务器的时区,应该按服务器所在地设。大阪的机器就是 Asia/Tokyo,美国盐湖城的机器就是 America/Denver。时区跟的是机器,不是跟人。
这个纠正很关键,因为后面所有看日志、排定时任务的人,都默认服务器时间就是当地时间。设错了,每次看日志都得在脑子里换算,迟早会看错一次。
三步:查、改、验
第一步:查现在是什么时区。
timedatectl输出里有一行 Time zone:,就是当前时区。新装的云服务器默认经常是 Etc/UTC(协调世界时),看着跟北京时间差 8 小时,日志时间全对不上本地感觉。
第二步:改。
timedatectl set-timezone Asia/Tokyo把 Asia/Tokyo 换成你要的时区。不知道完整名字可以先列出来找:
timedatectl list-timezones | grep -i tokyo常见的几个:上海是 Asia/Shanghai,东京是 Asia/Tokyo,美国盐湖城是 America/Denver。
第三步:验。
date显示的时间和时区缩写对了,就是改成了。改时区不需要重启机器,也不需要重启服务,立即生效。
两个容易混淆的概念
第一,服务器时区不等于浏览器显示的时区。
有一次我用浏览器走大阪节点的代理,打开一个显示时区的网站,页面上写着 SHANGHAI。当时差点以为是服务器时区没改对。其实不是:网站显示的时区,取的是你访问设备的系统时区(我电脑就是上海时区),跟服务器时区没关系。服务器时区只影响服务器自己的日志和定时任务。
第二,夏令时不用手动调。
像 America/Denver 这种带夏令时的时区,夏令时期间是 MDT(UTC-6),夏令时结束自动变 MST(UTC-7)。用 timedatectl 设好时区名字之后,切换是系统自动处理的,不用每年手动改两次。
一句话总结
改时区不用翻配置文件,记住三步:timedatectl 查,timedatectl set-timezone 改,date 验。以及最重要的一条:时区按机器所在地设,不按人所在地设。
评论
发表评论