Linux下时区的设置

主机环境:Gentoo Linux 3.1.10


由于windows和linux两个系统设定时间时以主板CMOS内的时间为依据,但却有不同的时间计算标准。所以导致了系统时间的纠纷问题。
  Linux以当前主板CMOS内时间做为格林威治标准时间,再根据系统设置的时区来最终确定当前系统时间(如时区设置为GMT+08:00北京时间时以及当前CMOS时间为03:00,那么系统会将两个时间相加得出显示在桌面的当前系统时间为11:00)。
  Windows 操作系统却直接把CMOS时间认定为当前显示时间,不根据时区转换。这样每调整一次系统时区,系统会根据调整的时区来计算当前时间,确定后,也就同时修改了CMOS内的时间(即每调整一次时区,设置保存后,CMOS时间也将被操作系统改变一次,注意不同操作系统调整时间后,也会同时改变CMOS时间,这一点是共通的)。
  UTC即Universal Time Coordinated,协调世界时
  GMT即Greenwich Mean Time,格林尼治平时
  在这里,你可以把UTC认为是GMT+0。Windows和(Linux/Unix/Mac)缺省看待系统硬件时间的方式是不一样的:
  * Windows把系统硬件时间当作本地时间(local time),即操作系统中显示的时间跟BIOS中显示的时间是一样的。
  * Linux/Unix/Mac把硬件时间当作UTC,操作系统中显示的时间是硬件时间经过换算得来的,比如说北京时间是GMT+8,则系统中显示时间是硬件时间+8。
  这样,当PC中同时有多系统共存时,就出现了问题。假如你的Linux和WindowsXP中设置的时区都为北京时间东八区,而你在Linux中把当前系统时间更改为9:00AM。则此时硬件中存储的实际是UTC时间1:00AM。这时你重启进入Windows后,你会发现windows系统中显示的时间是1:AM,比Linux中慢了八个小时。同理,你在Windows中更改或用网络同步了系统时间后,再到Linux中去看,系统就会快了8小时。
  改windows上的时间后,有时它会自动又改回来。所以,最好在linux下的修改:

下面是修改方法:

设置Linux的时区

1、设置/etc/下的localtime

复制或链接

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2、修改/etc/conf.d/hwclock

clock="local"


<think> 我们参考多个引用提供的方法,并结合Linux系统设置时区的常见实践来回答。 用户需求:将Linux系统时区设置为中国时区(中国标准时间,通常为Asia/Shanghai) 根据引用[1][2][3],我们可以总结出以下步骤: 方法一:使用符号链接(推荐) 步骤1:检查时区文件是否存在 在`/usr/share/zoneinfo/`目录下查找是否存在`Asia/Shanghai`文件(中国时区通常使用上海,尽管有时也提到北京,但标准名称是Shanghai)。 步骤2:创建符号链接 执行命令: ```bash sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ``` 这里使用`-f`选项强制覆盖现有的链接或文件。 步骤3:验证时区 使用`date`命令检查输出时间是否为中国标准时间(CST)。 方法二:通过环境变量(适用于嵌入式系统或特定环境) 编辑`/etc/profile`或用户的shell配置文件(如`.bashrc`),添加: ```bash export TZ=&#39;Asia/Shanghai&#39; ``` 然后让配置生效:`source /etc/profile` 或重新登录。 方法三(可选):使用`timedatectl`命令(适用于systemd系统) 如果系统支持systemd,可以使用: ```bash sudo timedatectl set-timezone Asia/Shanghai ``` 注意:引用[3]中提到嵌入式系统可能采用复制时区文件并创建链接的方式,但通常使用符号链接即可。 总结:推荐使用方法一或方法三(如果有systemd)。 验证: 执行`date`命令,如果显示类似“CST”字样(中国标准时间),则设置成功。 另外,引用[1]中提到可以修改系统时区配置文件(通常是`/etc/timezone`),但现代Linux发行版可能不需要,因为创建符号链接到`/etc/localtime`是标准做法。 步骤4(可选):更新/etc/timezone文件(某些系统需要) 编辑`/etc/timezone`,将其内容修改为: ``` Asia/Shanghai ``` 结语:以上方法适用于大多数Linux发行版。 根据引用[2]和引用[3]的方法,我们提供了多种设置方式。 注意:在嵌入式系统中,如果`/usr/share/zoneinfo`目录不存在,可能需要从其他系统复制,但一般服务器和桌面系统都自带。 问题:用户可能还关心时间同步,但问题只要求设置时区设置时区后,系统时间会基于该时区显示,但硬件时钟通常是UTC,由系统转换。 相关问题: 1. 如何检查Linux系统当前的时区设置? 2. 设置时区后,系统时间不正确,如何同步网络时间? 3. 在Docker容器中如何设置时区? 4. 嵌入式Linux系统没有/usr/share/zoneinfo目录,如何设置时区? </think> ### 如何将Linux系统时区设置为中国时区 以下是将Linux系统时区设置为中国时区(Asia/Shanghai)的三种方法,参考了权威操作实践[^1][^2][^3]: #### 方法一:通过符号链接设置(推荐) ```bash # 删除现有时区链接 sudo rm -f /etc/localtime # 创建上海时区链接(中国标准时间) sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ``` **验证**:执行 `date` 命令查看输出是否包含 `CST`(中国标准时间)标记[^2]。 #### 方法二:使用 timedatectl 工具(systemd系统) ```bash # 设置时区为上海 sudo timedatectl set-timezone Asia/Shanghai # 验证设置 timedatectl | grep "Time zone" ``` **优势**:支持自动处理时区文件和配置文件更新[^1]。 #### 方法三:修改配置文件(嵌入式系统适用) 1. 复制时区文件到系统: ```bash cp -r /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ``` 2. 或在 `/etc/profile` 添加环境变量: ```bash export TZ=&#39;CST-8&#39; # 中国标准时间UTC+8 ``` **适用场景**:资源有限的嵌入式设备[^3]。 #### 验证设置 ```bash date +"%Z %z" # 应输出 CST +0800 cat /etc/timezone # 部分系统需检查此文件 ``` > **注意事项**: > 1. 所有操作需root权限 > 2. 中国不实行夏令时,无需额外配置 > 3. 推荐优先使用方法一或二[^1][^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值