![]()
常说的linux系统时钟有两个,一个是硬件时钟(RTC),即BIOS时间。另一个是系统时钟(LTC),即我们日常操作经常看到的各种时间,比如date命令获取的时间。
当Linux启动时,系统Kernel会去读取硬件时钟的设置,然后根据时区设置信息,计算得到系统时钟,此时系统时钟就会独立于硬件运作。有时我们会发现系统时钟和硬件时钟不一致,或系统显示LTC时间和实际当地时间不一致的情况,就需要执行时间同步设置相关工作。RTC时间和时区出现问题时,经常会导致设置好时间后,重启失效的问题。这种情况,就需要排查RTC时间和时区设置是否正确。
先来了解下时区的一些皮毛知识:
UTC(世界标准时间)
协调世界时,又称世界标准时间或世界协调时间,简称UTC(从英文“Coordinated Universal Time”/法文“TempsUniversel Coordonné”而来),是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间。
扩展:
闰秒,是指为保持协调世界时接近于世界时时刻(GMT),由国际计量局统一规定在年底或年中(也可能在季末)对协调世界时增加或减少1秒的调整。由于地球自转的不均匀性和长期变慢性(主要由潮汐摩擦引起的),会使世界时(民用时)和原子时之间相差超过到±0.9秒时linuxutc时间转换北京时间,就把协调世界时向前拨1秒(负闰秒,最后一分钟为59秒)或向后拨1秒(正闰秒,最后一分钟为61秒);
GMT(格林尼治平时)
格林尼治平时(又称格林尼治平均时间或格林尼治标准时间,旧译格林威治标准时间;英语:Greenwich MeanTime,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。英国伦敦格林威治定为0°经线开始的地方,地球每15°经度 被分为一个时区,共分为24个时区,相邻时区相差一小时;例: 中国北京位于东八区,GMT时间比北京时间慢8小时。
理论上来说,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。由于地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能与实际的太阳时有误差,最大误差达16分钟。
由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治时间已经不再被作为标准时间使用。现在的标准时间,是由原子钟报时的协调世界时(UTC)。
补充:
由于地球轨道并非圆形,其运行速度又随着地球与太阳的距离改变而出现变化,因此视太阳时欠缺均匀性。视太阳日的长度同时亦受到地球自转轴相对轨道面的倾斜度所影响。为着要纠正上述的不均匀性,天文学家计算地球非圆形轨迹与极轴倾斜对视太阳时的效应。平太阳时就是指经修订后的视太阳时。在格林尼治子午线上的平太阳时称为世界时(UT0),又叫格林尼治平时(GMT)。 为了确保协调世界时与世界时(UT1)相差不会超过0.9秒,有需要时便会在协调世界时内加上正或负闰秒。因此协调世界时与国际原子时(TAI)之间会出现若干整数秒的差别。位于巴黎的国际地球自转事务中央局(IERS)负责决定何时加入闰秒。
也就是说,UTC 基本上等于GMT
DST: Daylight Saving Time(日光节约时间)
所谓日光节约时间(Daylight Saving Time,简称D.S.T.)是指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用,在英国则称为夏令时间(Summer Time)。这个构想于1784年由美国班杰明·富兰克林提出来,1915年德国成为第一个正式实施夏令日光节约时间的国家,以削减灯光照明和耗电开支。自此以后,全球以欧洲和北美为主的约70个国家都引用这个做法。目前被划分成两个时区的印度也正在商讨是否全国该统一实行夏令日光节约时间。欧洲手机上也有很多GSM系统的基地台linuxutc时间转换北京时间,除了会传送当地时间外也包括夏令日光节约时间,做为手机的时间标准,使用者可以自行决定要开启或关闭。值得注意的是,某些国家有实施夏日节约时间的制度,出国时别忘了跟随当地习惯在表上调整一下,这可是机械表没有的功能设计。
夏季节约时间,即夏令时;是为了利用夏天充足的光照而将时间调早一个小时,北美、欧洲的许多国家实行夏令时;
CST(也称为北京时间)
CST实际是四个不同时区的缩写,如下:
Central Standard Time (USA) UT-6:00 –美国标准时间
Central Standard Time (Australia) UT+9:30 –澳大利亚标准时间
China Standard Time UT+8:00 –中国标准时间
Cuba Standard Time UT-4:00 –古巴标准时间
北京时间,China Standard Time,中国标准时间。在时区划分上,属东八区,比协调世界时早8小时,记为UTC+8。
Linux相关时间概念:
[root@N1 ~]# timedatectl statusLocal time: 三 2022-09-14 19:51:36 CST --LTC 即本地时间Universal time: 三 2022-09-14 11:51:36 UTC --UTC 即UTC,世界标准时间RTC time: 二 2022-09-13 19:50:15 --RTC 即硬件时间 real time clockTime zone: Asia/Shanghai (CST, +0800)NTP enabled: n/aNTP synchronized: noRTC in local TZ: noDST active: n/a[root@N1 ~]#
在 Linux 系统中,RTC 的时间究竟是 LTC 还是 UTC 是由一个配置文件决定。RedHat 发行版中,该配置文件叫做/etc/sysconfig/clock 。 当该文件中有UTC=true”这一行设定时,Linux 系统会将 RTC 时间解读为 UTC 时间,否则就解读为 LTC。
/etc/sysconfig/clock
只对 hwclock 命令有效,且只在系统启动和关闭的时候才有用(修改了其中的 UTC=true 到 UTC=false 的前后,执行 hwclock (–utc,或 –localtime) 都没有变化,要重启系统后才生效);
在 /etc/sysconfig/clock 中 UTC=false 时,date、hwclock、hwclcok –localtime 输出的时间应该都一致,且此时 hwclock –utc是没有意义的;
在 /etc/sysconfig/clock 中 UTC=ture 时,date、hwclock 的输出是一致的,hwclock –localtime 的输出则是UTC时间;
系统关闭时会同步系统时间到硬件时钟,系统启动时会从硬件时钟读取时间更新到系统,这2个步骤都要根据 /etc/sysconfig/clock 文件中UTC的参数来设置时区转换。
/etc/localtime
这个文件用来设置系统的时区,将/usr/share/zoneinfo/ 中相应文件拷贝到/etc下并重命名为 localtime 即可修改时区设置(通常通过软连接实现),而且这种修改对 date命令是及时生效的。不论是 date 还是 hwclock 都会用到这个文件,会根据这个文件的时区设置来进行UTC和本地之间之间的换算
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,加站长微信免费获取积分,会员只需38元,全站资源免费下载 点击查看详情
站 长 微 信: thumbxmw