在Linux系统中,默认使用的是UTC时间。
即使在安装系统的时候,选择的时区是亚洲上海,Linux默认的BIOS时间(也称:硬件时间)也是UTC时间。
在重启之后,系统时间会和硬件时间同步,如果两者不一致,会以硬件时间为标准进行时间的校准。所以,之前设置的时区和时间就失效了
UTC:协调世界时(Universal Time Coordinated)英文缩写。是由国际无线电咨询委员会规定和推荐,并由国际时间局(BIH)负责保持的以秒为基础的时间标度。
UTC相当于本初子午线(即经度0度)上的平均太阳时,过去曾用格林威治平均时(GMT)来表示。
北京时间比UTC时间早8小时,以2023年1月1日0000UTC为例,UTC时间是零点,北京时间为2023年1月1日早上8点整。
# 查看当前系统时间
date
# 查看当前硬件时间
hwclock或clock
#查看当前系统时区
date -R
本文讨论如何设置系统时区,有多种方法,根据学习情况,酌情处理。
一、图形化设置
CentOS7如何图形化设置时区?
这与图形化设置网络、设置主机名、设置新用户等,基本相同。过程简单,对于初学者比较友好。
1.进入设置
点击【应用程序】->【系统工具】->【设置】选项
2.找到时区
点击【详细信息】->【日期和时间】
3.操作认证
点击【解锁】并输入密码进行【认证】
Centos7不需要认证,而Centos8和ubuntu 修改时区时需要认证。按要求认证即可。
4.自动设置
开启【自动设置日期和时间】、【自动设置时区】选项
根据情况,可决定是否开启自动设置。
二、tzselect
用tzselect设置时区采用人机交互的形式,十分方便。
命令中第一个字母t是时间time的简写;
命令中第二个字母z是区域zone的简写。
使用tzselect 设置时区,按照提示,一步步进行,没有难度。
按照提示一路选择: 5) asia —-> 9) china ——> 1) beijing
但成功设置后,会提示把时区变量作为全局变量添加到profile中
1.可以采用命令追加形式
echo “export TZ='Asia/Shanghai'” >>/etc/profile
2.可以采用vim 打开文件,在最后一行添加内容
export TZ='Asia/Shanghai'
保存,退出
完成对文件的修改后,并不能马上更改时区,仍然需要执行命令 source /etc/profile
当执行source命令时,系统会退出当前bash,并重新登录。
再重新查看时间与时区,已更新。
三、timedatectl
timedatectl是一个命令行工具,它允许你查看或者修改系统的时间和日期。它在所有现代的基于 system 的 linux 系统中都可以使用。
timedatectl 打印当前时区信息
如果不带参数直接运行,会正常打印出时间信息。
timedatectl 查看可以设置的时区
timedatectl list-timezones
带上list-timezones参数运行下,看到如下的结果:
上面的结果展示不全, 往下翻找可以看到 Asia/Shanghai 这一行。
不想全部看完,可按q退出查看。
timedatectl 设置时区
timedatectl set-timezone Asia/Shanghai
设置成功后,重新看下时间
四、cp文件设置时区
cp文件设置时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
这种方式也可以设置时间,但是还是建议使用timedatectl工具。 因为timedatectl工具屏蔽了各个linux的差异性。
五、vim修改时区文件
我们如何确定自己的时区是正确的?
时区文件默认的是:/etc/localtime
下面命令会把我们系统的时间还有时区显示出来
如果时区正确,系统时间还是有问题,那么我们需要同步网络时间。我们需要在另一篇文章中讨论。