|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
装完CentOS7和Win8双系统,发现linux 的时间与windows上的时间不一致,正好差8个时区!
6 A7 B# l3 |, P9 u原因是linux将机器的物理时间理解为UTC时间。* p' J1 Q0 U: \. Y8 D# s! F5 T0 G
现在网上好多文章,基本上都是说要改/etc/default/rcS,CentOS 7中根本没有这个文件。后来终于得知这个配置文件被废弃了,调整时间现在使用 /etc/adjtime。4 [. v3 P" v9 l/ e- c4 ?/ Q3 L
( U$ R+ h H9 t# i X9 \
解决方案为:
+ H9 H* U' N) J! N3 H 编辑文件/etc/adjtime5 }$ s. Q% o& _+ [! \+ V
' `: x/ o7 j; M
将
/ K6 o/ o0 s( C! V W2 o/ ? 1 -0.130909 1374413192 0.0000002 13744131923 UTC
3 D, [& V! _, y- n 修改为
( \; l% A5 Q, s/ n: s! a) l 1 -0.130909 1374413192 0.0000002 13744131923 LOCAL6 ^4 t! S6 |$ s! b, x
再调系统时间就好了。 a k) T$ ^2 O" c. ]9 t( P1 ?
注意:以上内容可能有所不同,只需要把 UTC 改为LOCAL即可。
! d* E1 v4 }9 O' A3 Z/ W
( N9 r; f) e4 p. [- K5 I. y5 N9 ^" ]1 m, g分析总结:
3 j8 |" \" L4 d$ D$ H' r% XUTC和CST不同存储方式直接影响这系统间时间的兼容性。& t/ }* w/ H" r6 j. G
时间处理方法1: 存储UTC的秒数那么整个系统的开关机过程将为:
: ?0 a* |# ?& D, U+ ]0 u2 V! _ 关机:CST(时区变化,加减相应的小时)->UTC->bios-------------在这种情况下,在bios中看到的就是UTC时 间啦(由于bios中没有时区的概念,所以你要像看懂这个时间代表的是什么地方的时间,你一定要明白它由谁存的数,还有这个数原本代表了什么意义,如是那 个时区的)
8 z q& Z$ e* Q1 R7 K2 V6 L: Z- F 开机:bios->UTC->CST(时区变化)
* A! @# M9 P# f* a
0 I+ n" |( W2 I4 Q8 `5 x# U 时间处理方法2:存储CST的秒数那么整个系统的开关机过程将为:
) A. k; q! c* y' i 关机:CST(不用时区变化了,之间化为秒数后)->bios-------------这个时候你在bios中看到的时间就是有时区的啦 ^_^
8 ^0 O4 J; ~8 [ 开机:bios->CST( f e$ a9 u3 s
+ ~0 D5 J% k* R6 `
所以windows和linux系统组成双系统后,系统时候会出现相差大约8小时的情况。原因是 Linux 操作系统是以主机板 CMOS 时间做为格林威治标准时间,再根据系统设置的时区来确定目前系统时间。但是一般 Windows 系统并不如此,Windows 操作系统直接把 CMOS 时间认定为目前系统时间,不再根据时区转换。
0 m( A" r- X; \+ _7 ~+ ?4 a2 p( \ T( d1 C# F0 A2 |: _/ \
修改 Windows 使用格林威治标准时间 UTC方法如下:* R4 L R( _4 Q6 @6 X
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\ 中加一项类型为 REG_DWORD 的机码,名称为 RealTimeIsUniversal,值设为 1。
$ y9 q, Z- f7 { Z- I5 p5 b/ Z5 i/ G4 h4 K, P! G! v2 P5 {
$ I, G6 U$ g2 d/ o4 ^3 A. q5 M) M
linux中,编辑文件/etc/adjtime
- U' d/ a, X5 p' [9 C& `0 Q* E- o3 a5 z$ s6 ^7 G
' U$ V2 V' y2 W# v, E+ Y: j. c t
9 i. B' E" L7 S6 }7 Z# h1 P+ B/ r" I; p
|
|