找出家庭服务器自动启动的原因 CentOS7的UTC、CST时间区别

支付宝内搜索 9155838 即可领现金红包 每天都能领哦

前天我手动关掉了家里的服务器,然后晚上突然想用到服务器了,就去开,却发现已经开了。

当时想难道是不小心网络唤醒的?

因为有事情,也就没多想了,然而昨天下午又发生了自动启动的事情。
对于有强迫症的我从此心里就有个疙瘩了。

今天就整理了一下家里的路由器、光猫、网线和光纤,一堆乱七八糟的放着,好不容易用了一个来小时整理好了。

下午就干脆将服务器从角落搬出来,接上键盘和显示器,进到BIOS里面看,首先看到的是BIOS时间明显不对,比正常时间慢了8小时。

然后又找了下自动开机启动的设置,果然之前设置了每天早上8点钟自动开机(两年前设置的,我自己都忘记了)。

自动重启的问题就在这里了,将其关闭,以后只用网络唤醒了。

将服务器放回原处,接上网线,登陆进去看到系统时间比真实时间快了8小时。。。

然后知道了timedatectl:
CentOS 6版本,时间设置有date、hwclock命令,从CentOS 7开始,使用了一个新的命令timedatectl,如下是我已经用 /usr/sbin/ntpdate ntp1.aliyun.com 同步过后的结果:

$ timedatectl
      Local time: Mon 2019-05-06 17:36:18 CST
  Universal time: Mon 2019-05-06 09:36:18 UTC
        RTC time: Mon 2019-05-06 17:36:18
       Time zone: Asia/Chongqing (CST, +0800)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

看起来完美了,系统时间和硬件时间都一样了,然后我有习惯性的同步一下时间到主板上 /sbin/hwclock --systohc,再查看:

$  timedatectl status    
      Local time: Mon 2019-05-06 17:38:39 CST
  Universal time: Mon 2019-05-06 09:38:39 UTC
        RTC time: Mon 2019-05-06 09:38:39
       Time zone: Asia/Chongqing (CST, +0800)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

醉了,主板时间又慢了8小时。。。
继续查了一下,用这两种设置硬件时间搞定:

hwclock --systohc --localtime
timedatectl set-local-rtc 1

两条命令效果一样的,随便选一条执行都可以。

timedatectl查看所有可用的时区:

timedatectl list-timezones |  grep  -E "Asia"

晕,竟然没有我一直以来用的Chongqing,只能改为大上海了。

timedatectl设置时区:

timedatectl set-timezone Asia/Shanghai

继续查看:

$ timedatectl
      Local time: Mon 2019-05-06 18:05:01 CST
  Universal time: Mon 2019-05-06 10:05:01 UTC
        RTC time: Mon 2019-05-06 18:05:01
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: yes
      DST active: n/a

Warning: The system is configured to read the RTC time in the local time zone.
         This mode can not be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.

硬件RTC时间是对了,但是有警告,算了不管它了,如果按提示执行timedatectl set-local-rtc 0 硬件时间又会慢8小时。

后来知道了硬件时间默认为UTC。
还知道了一个貌似比ntp更靠谱的chrony时间同步服务,但我没去尝试了,以后有空再研究下。

UTC (Universal Time Coordinated)

全球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时。

CST (China Standard Time)

中国标准时间,东八区,在UTC的基础上+8小时。

RTC(Real-Time Clock)、CMOS时间

一般在主板上靠电池供电,服务器断电后也会继续运行。仅保存日期时间数值,无法保存时区和夏令时设置。

Local time系统时间

一般在服务器启动时复制硬件RTC时间,之后独立运行,保存了时间、时区和夏令时设置。

补充:

网上那些复制粘贴的文章所说的这个方法:
vi /etc/sysconfig/clock
ZONE="Asia/Shanghai"
UTC=false
ARC=false
根本没用,CentOS7根本没这个文件,即使自己创建了也是无效的。

推荐文章

仅有 1 条评论
  1. 石樱灯笼

    时区的问题我也研究过。真幸运咱们国家不使用夏令时,不然这问题就无解了。

    石樱灯笼 回复
发表新评论