Linux修改时间 修改时区 | Linux时间校准

发布时间 2023-09-06 06:25:30作者: GaoYanbing

今天stat文件的时候发现时间是错的,我很懵逼,我想改一下子,结果找了好多都不对。乱七八糟的只好自己整理一下。

修正Linux时间只需三步
ntpdate ntp1.aliyun.com
对准到阿里云校时服务器
hwclock -w
将系统时间同步到硬件时间
vim /etc/localtime
将UTC改为CST或者UTC+8即可。

修改之后时间显示就是正常的了。

如果只想改时间看到这就可以退出去了,如果想知道每一步的原理就继续往下看。

1 时间
linux系统有两个时钟:

硬件时钟,即BIOS时间;
系统时钟,是linux系统内核时间
硬件时钟是存储在CMOS里的时钟,关机后该时钟依然运行,主板的电池为它供电。每次Linux启动,系统内核会先去读取硬件时钟的设置作为系统时间。

只调整系统时钟,不会改变硬件时钟,下次启动系统时间又会变成硬件时钟的时间。所以想要永久修改linux时间并使得时间准确,就需要永久修改硬件时间。

举个栗子?:


1.1 查看系统时间
date

如上图,使用date会显示当前时间。

因为我还原了一下,所以时间停留在我上次备份系统的时间。

timedatectl

我这里就不演示了,用法自己去查(或者哪天我有空了再补充)。

因为我用的CentOS6,还不支持 timedatectl,详细原因看上角标的附录图↗12。

1.2 查看硬件时间
clock
hwclock
上边两条语句都可以读取硬件时间。


1.3 修改系统时间
修改系统时间就是上边绿字说的两个:当调整系统时钟或与internet同步后。

手动设定:
date -s "yyyymmdd hh:mm:ss"

比如使用 date -s "20221201 19:20:00",这里我将时间设置为2022年了。下图设置成功。

但是这样会存在一个问题就是秒数无法精确。所以可以使用自动对齐到网络时间。

自动对齐到网络时间:
ntpdate ntp1.aliyun.com

这里是直接将时间对齐到阿里云校时服务器(注意这里用的是UTC时间,和中国差八小时,看2.3节将其修改为中国时间)。


1.4 修改硬件时间
为了保证下次开机时候不会重置为错误的时间,所以要将硬件时间也进行修正。

hwclock --set --date="yyyymmdd hh:mm:ss"
clock --set --date="yyyymmdd hh:mm:ss"
上边两句作用一样,用哪个都可以。

那你肯定想,这个如何对齐到网络时间呢。

硬件时间没有直接的类似于utpdate之类的操作。但是你可以将系统时间写入硬件,就用到了1.5了。

1.5 同步系统时间和硬件时间
如果你的系统时间是准确的,硬件时间是不准确的,那你可以使用:

hwclock --systohc
hwclock -w
两句作用是一样的,都是将系统时间同步到硬件时间。

 

2 时区
2.1 查看时区
cat /etc/sysconfig/clock

下图可以看出我设置的是北京时间。


2.2 修改时区
tzselect

使用tzselect会跳出选项,按照选项输入数字即可。

输入tzselect输入选择地区


选择国家,我这选了中国


选择使用的时间,我这里选的北京时间(也就是上海时间)


他会让你再确认一下信息,选好之后确认即可。


2.3 修改UTC CST时间
UTC是世界标准时间,CST是中国标准时间。

现在你可能会遇到一个问题,对齐到阿里云时间之后是UTC时间,明明时区设置的是中国,为什么还是显示UTC时间呢?
说实话,你时间对不对和你设置的时区毫无关系……

现在就对其进行修改。

vim /etc/localtime

修改localtime文件,将UTC改为CST或者UTC+8即可。

修改之后时间显示就是正常的了。


图中大致意思是CentOS7才开始支持timdedatectl
↩︎

我尝试安装了一下,也是无法安装状态。

↩︎
————————————————
版权声明:本文为CSDN博主「Ann's Blog」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36667170/article/details/121655335