|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
装完CentOS7和Win8双系统,发现linux 的时间与windows上的时间不一致,正好差8个时区!
6 Q2 _ `0 F8 \0 {! [: i原因是linux将机器的物理时间理解为UTC时间。# N8 a: k& s9 h# I
现在网上好多文章,基本上都是说要改/etc/default/rcS,CentOS 7中根本没有这个文件。后来终于得知这个配置文件被废弃了,调整时间现在使用 /etc/adjtime。
! Q( w& d' C% B6 Q2 _$ ]0 ]/ ] G. N3 r+ q
解决方案为:. y9 X1 `- ?/ m; ?
编辑文件/etc/adjtime
$ T) r* F9 M4 D; Y& h2 w& |9 }( j f. S' R7 J$ ]. _8 J! |
将* X" t- V+ z- W
1 -0.130909 1374413192 0.0000002 13744131923 UTC
9 S2 V2 N( {, C8 r6 `1 P$ d: s 修改为/ ^# h) Q2 R$ h: K2 a
1 -0.130909 1374413192 0.0000002 13744131923 LOCAL
2 R% {( ^5 s! c U9 j4 t* B 再调系统时间就好了。
: m6 @; R& X3 a. |7 @注意:以上内容可能有所不同,只需要把 UTC 改为LOCAL即可。
0 G$ c- z& r4 e$ B5 R5 K; w
1 e5 H; |0 k, z8 M. N分析总结:
* i! r. m! B/ V5 wUTC和CST不同存储方式直接影响这系统间时间的兼容性。* s% g& m. M2 J3 O# }' `2 ]
时间处理方法1: 存储UTC的秒数那么整个系统的开关机过程将为:
) m9 Y2 x( N6 o* l" O; d/ u% R% u' n 关机:CST(时区变化,加减相应的小时)->UTC->bios-------------在这种情况下,在bios中看到的就是UTC时 间啦(由于bios中没有时区的概念,所以你要像看懂这个时间代表的是什么地方的时间,你一定要明白它由谁存的数,还有这个数原本代表了什么意义,如是那 个时区的)
$ ~8 Q$ E$ C% t4 I 开机:bios->UTC->CST(时区变化)
' y( Q& s# B# f E+ @+ C2 D6 ?! p+ ~% T0 m
时间处理方法2:存储CST的秒数那么整个系统的开关机过程将为:
6 m% }" i* c c \( o" M* y* C5 [* j 关机:CST(不用时区变化了,之间化为秒数后)->bios-------------这个时候你在bios中看到的时间就是有时区的啦 ^_^ ; K; Q2 S- E/ f7 Y% U% Y A
开机:bios->CST
" K- k D1 |6 J( Z, b: r1 l( F6 e [+ O. @- i7 P- l
所以windows和linux系统组成双系统后,系统时候会出现相差大约8小时的情况。原因是 Linux 操作系统是以主机板 CMOS 时间做为格林威治标准时间,再根据系统设置的时区来确定目前系统时间。但是一般 Windows 系统并不如此,Windows 操作系统直接把 CMOS 时间认定为目前系统时间,不再根据时区转换。+ h0 G E1 ]" ]9 ?2 m+ X# M
; h$ h/ s7 C1 S3 \" o修改 Windows 使用格林威治标准时间 UTC方法如下:: V& C6 S$ i; L5 h- h8 o1 G
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\ 中加一项类型为 REG_DWORD 的机码,名称为 RealTimeIsUniversal,值设为 1。
) i# d0 W5 o& y& k4 |, o
4 m9 ?+ _" a" u& Z7 s' Y: D3 }' L
1 P9 J. l% d$ K4 D0 ^4 jlinux中,编辑文件/etc/adjtime# W- p+ D5 t- ^
* \/ c' W% k% \8 U% s4 R$ m/ _( o6 ]5 N' S7 C) ]* ^, n
' i# Z. M, I, S- Z5 g s
" d/ v, @# U, p |
|