Linux机器上的时间比较复杂,有各式各样的时钟和选项等等。机器里有两个时钟,硬件时钟从根本上讲是CMOS时钟,而系统时钟是由内核维护的。
- 修改硬件时钟
(1)更新机器的硬件时间。命令为:hwclock --adjust
硬件时钟通常被设置成全球标准时间(UTC),而将时区信息保存在/usr/share/lib/timezone (或者在某些系统中可能是/usr/local/timezone)目录下某个适当的文件中,然后用一个符号链接文件/etc/localtime指向它。
(2)查看硬件时钟。命令为:hwclock --show
(3)重置硬件时钟用:hwclock --set --date=mm/dd/yy hh:MM:ss" - 修改时区信息。命令为:tzset
如果系统中没有这条命令,那可以用类似下面的操作:
ln -s /etc/localtime /usr/share/zoneinfo/US/Pacific - 选择时区信息。命令为:tzselect
根据系统提示,选择相应的时区信息。 - 修改系统时钟。命令为:date -s
(1)将时间调整为10月11日凌晨1点55分:data 10110155
(2)将系统时间设定成2005年8月8日: date -s 2005/08/08
(3)将系统时间设定成下午8点12分0秒: date -s 20:12:00
该命令是用来修改系统时钟的。在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在执行完 date -s 命令后,如果马上重起系统,修改的时间就有可能没有被写入CMOS。如果要确保修改生效,最好再使用 clock -w 这个命令将系统时间强行写入CMOS。
以下是我遇到的情况:
查看到一台测试环境机器时间对不上,本以为系统时间与网络北京时间不同步,就在终端命令执行网络时间同步
[root@localhost ~]# ntpdate time1.aliyun.com
image.png
执行完之后,在执行终端命令,查看时间还是一样,其实EDT和CST是有区别的,时区不一样
EDT:指美国东部夏令时间,波士顿、纽约市、[华盛顿哥伦比亚特区],都在这个时区内,跟北京时间有12小时的时差,晚12小时。
CST:可以指下面两种:
1. 美国中部标准时间(西六区,-6:00),中国是东八区(+8:00),北京时间比美国中部标准时间早14个小时。3:45 PM CST 是北京时间凌晨1:45。
2. 中澳大利亚标准时间(+10:30),中国是东八区(+8:00),北京时间比中澳大利亚标准时间晚2个半小时。3:45 PM CST 是北京时间下午上午5:45。
那么现在只要改成北京时间的时区CST就可以了,修改如下:
[root@localhost ~]# mv /etc/localtime /etc/localtime.bak
[root@localhost ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@localhost ~]# date
网友评论