学原理脱坑 之 centos 6/7 更新 UTC 以及 设置系统时区

今天花了一点时间搞懂了 linux 上设置时间/时区是怎么回事。其实也是等到舍友回来后看了他的 ubuntu 系统时间才突然突破了盲点。而且巧了,ubuntu 也能用 timedatectl,那么让我们看下去。

总的来说,要让 linux 系统的 date 命令输出正确的 CST 时间,只需要两步操作:

第一步,更新 UTC 时间:

  可以使用 ntpdate 命令:ntpdate -u ntp.api.bz

  PS:ntp.api.bz 是一个 NTP 服务器,可以获取 UTC 时间。aliyun 好像也有一个 NTP 服务器,要用的话可以搜一下。

第二步,设置你的系统时区:

  centos 6 设时区:

    我的centos 6.7 上使用 tzselect,是一个引导式的程序,输入对应字符前面的数字即可,中间大概会碰到 Asia、China、Beijing Time 等选项,选中它们前面的字样即可

  centos 7 设时区:

    centos 7 有一个新的命令方便设置时区:timedatectl set-timezone Asia/Shanghai。其他备用可选的时区还有 Asia/Chongqing(CST),Asia/Taipei(CST),Asia/Hong_Kong (HKT)等。

    如果不是设置中国的时区,有另外一个命令可以查看 timedatectl list-timezones,然后选择时区。更多其他命令通过 timedatectl -h 查看。

设置时间/时区原理:

  首先理解一下 GMT 和 UTC,ummm最近风声紧,这里引用百度搜到的一条答案:https://zhidao.baidu.com/question/153332934.html

  理解了 GMT 和 UTC 了之后,接下来你需要知道操作系统会存储两个时间元素,一个是 UTC,一个是 timezone。UTC 是标准时间,timezone 用来确定你是属于哪个时区的地区,有了 UTC+timezone 就可以确定你所在的地区的时间,基本规则就是 UTC 时间 + timezone 时间差,时间差一般是 ±0.5h/1h...8h 等。比如日本所在的时区就比我们中国早 1h(我们8点他们9点)。

  现在我们知道 linux 设置时间/时区的原理了。如果你参考了网上一些骚操作(没错,我就是中招了,搞坏了 Shanghai 时区文件),修改了 /etc/localtime 文件的内容,那么相应的就会影响到 /usr/share/zoneinfo/Asia/ 目录下的时区文件,这时候如果你用的是 centos 7,那么补救方法很简单,用 timedatectl 换一个时区就好了,上面提供了三个可以替换的时区。如果是 centos 6 ,可以参考以下命令,效果是一样的:

  ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime

网上其他一些答案的骚操作:

  搜到过修改 hwclock (硬件时钟)的,其实不怎么好用。

猜你喜欢

转载自www.cnblogs.com/christmad/p/11570152.html
UTC