linux下时间差8小时解决

本文详细介绍了如何在Linux系统中配置时区文件,并解释了如何通过设置UTC选项来同步系统时间与硬件时间。此外,还提供了具体的命令示例,帮助用户了解如何修改和同步时间。
原文:http://www.linuxdiyf.com/viewarticle.php?id=57999
 

时间就是金钱。。。。。可以差了8小时 :0(1 。。。。一段时间里一直很苦难。。。。⒏晓得怎么解决
现在基本上是解决老。。。和大家分享下

先说时区的配置,主要是两个文件:
/etc/localtime
/etc/timezone

timezone这个文件是个文本,里面只需要写一行自己的时区就行,我们这里就是上海(Asia/Shanghai)

localtime这个文件的类型不清楚,里面就写了些timezone data,它可以从系统自带时区文件那里拷贝,位置在:/usr/share/zoneinfo 
从这个目录下找到Shanghai拷贝到/etc下的localtime即可,同样也可以做个联接,也是同样效果

设定了时区,还要确定Linux的时间方案。Linux支持UTC时间,Coordinated Universal Time,也就是世界协调时,也就是本初子午线上的时间,它和以前的格林威治标准时(GMT)的区别似乎是它是由多个原子钟平均出来的。在 /etc/default/rcS这个文件中,设定了系统是否使用UTC,UTC=yes就是用。

计算机自己还有自己的时间,也就是硬件时间,hard clock,也就是存在BIOS里那个时间,关机也不会丢失。计算机启动时,就要读取这个时间。这个时间如果设定为UTC(GMT),也就是伦敦那地方的时间,就要在rcS文件中设定UTC=yes,反之则要设为no。

总之就是两种正确的设置:
BIOS=本地时间,UTC=no
BIOS=UTC时间,UTC=yes

一般来讲,BIOS里面都设定为当地时间,这是因为如果装双系统的话,Windows似乎不懂UTC,就会出问题。这时UTC=no。


Linux读取这个硬件时间要用到hwclock这个命令:
hwclock --show :显示硬件时间
hwclock --systohc :将系统时间写入硬件

hwclock --hctosys :将硬件时间写入系统时间

linux修改时区的步骤:

1)找到相应的时区文件/usr/share/zoneinfo/Asia/Shanghai ,用它替代当前的/etc/localtime文件

或者找你认为是标准时间的服务器,然后#scp root@xxx.xxx.xxx.xxx:/etc/localtime/etc/localtime

2)修改/etc/sysconfig/clock文件,修改为:

ZONE="Asia/Shanghai"

UTC=false

ARC=false

修改日期时间:

1)

用date修改日期时间

#date -s 08/24/2006

#date -s 13:02:00 

2)同步BIOS时钟,强制把系统时间写入CMOS

#clock -w

 

另外,查看Bois时间用 #hwclock -r

#tzselect 可以交互式修改时区


查看硬件时间:
# hwclock --show
或者#clock --show

设置硬件时间:
# hwclock --set --date="07/07/06 10:19" (月/日/年 时:分:秒)
或者#clock --set --date="07/07/06 10:19" (月/日/年 时:分:秒)


硬件时间和系统时间的同步:
按照前面的说法,重新启动系统,硬件时间会读取系统时间,实现同步,但是在不重新启动的时候,需要用hwclock或clock命令实现同步。
硬件时钟与系统时钟同步:# hwclock --hctosys(hc代表硬件时间,sys代表系统时间)或者# clock --hctosys
系统时钟和硬件时钟同步:# hwclock --systohc或者# clock --systohc


Linux系统时间与实际时间相差8小时的问题通常是由于系统将硬件时间(RTC)误认为UTC时间,而本地时区设置为UTC+8(如中国标准时间)所导致的。以下是详细的解决方案: 1. **检查当前时间设置** 使用`timedatectl`命令查看系统时间、硬件时间和时区设置: ``` timedatectl ``` 重点关注`RTC in local time`和`Time zone`字段。如果`RTC in local time`显示为`yes`,而`Time zone`为`CST`或`Asia/Shanghai`,则可能需要调整配置[^1]。 2. **将硬件时间设置为本地时间** 如果确认硬件时间使用的是本地时间而非UTC,可以通过以下命令将硬件时间设置为本地时间: ``` sudo timedatectl set-local-rtc 1 ``` 这会告诉系统硬件时间是本地时间格式,而不是UTC时间,从而避免系统自动添加8小时的时区偏移[^1]。 3. **同步系统时间和硬件时间** 在调整硬件时间后,建议手动同步系统时间和硬件时间以确保一致性: ``` sudo hwclock --systohc ``` 如果希望将硬件时间写入系统时间,可以使用: ``` sudo hwclock --hctosys ``` 4. **检查并设置正确的时区** 确保系统时区正确设置为`Asia/Shanghai`: ``` sudo timedatectl set-timezone Asia/Shanghai ``` 这一步确保系统时区与地理位置一致,避免因时区错误导致时间显示偏差[^1]。 5. **使用NTP服务同步时间** 安装并启用`chronyd`或`ntpd`服务,以自动同步网络时间协议(NTP)服务器时间: ``` sudo yum install chrony sudo systemctl enable chronyd sudo systemctl start chronyd ``` 这可以确保系统时间始终保持与全球标准时间同步,避免因手动设置导致的时间误差[^3]。 6. **Chrome浏览器时差问题** 如果使用的是Deepin Linux或其他基于Debian的发行版,并且Chrome浏览器显示时间与实际相差8小时,可能是浏览器未能正确识别系统时间。可以通过以下方式解决: - 在Chrome地址栏输入`chrome://flags/`,搜索`enable-javascript-harmony`并启用。 - 或者在终端中运行以下命令强制Chrome使用系统时间: ``` google-chrome-stable --disable-features=UseSystemTimeToSetClock ``` ### 示例代码 以下是一个简单的脚本,用于检查并自动调整硬件时间和时区设置: ```bash #!/bin/bash # 检查当前时间设置 echo "当前时间设置:" timedatectl # 设置硬件时间为本地时间 echo "设置硬件时间为本地时间..." sudo timedatectl set-local-rtc 1 # 设置正确的时区 echo "设置时区为亚洲/上海..." sudo timedatectl set-timezone Asia/Shanghai # 同步系统时间和硬件时间 echo "同步系统时间和硬件时间..." sudo hwclock --systohc # 启用NTP服务 echo "启用NTP服务..." sudo systemctl enable chronyd sudo systemctl start chronyd echo "完成时间调整。" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值