关于时间、时区、系统时间和硬件时间
nanshan 2024-10-05 18:26 25 浏览 0 评论
时区(Time Zone)是地球上的区域使用同一个时间定义。
1884年在华盛顿召开国际经度会议时,为了克服时间上的混乱,规定将全球划分为24个时区。
一、以下是一些术语的解释
格林威治标准时间 GMT
十七世纪,格林威治皇家天文台为了海上霸权的扩张计画而进行天体观测。1675年旧皇家观测所(Old Royal Observatory) 正式成立,到了1884年决定以通过格林威治的子午线作为划分地球东西两半球的经度零度。观测所门口墙上有一个标志24小时的时钟,显示当下的时间,对全 球而言,这里所设定的时间是世界时间参考点,全球都以格林威治的时间作为标准来设定时间,这就是我们耳熟能详的「格林威治标准时间」(Greenwich Mean Time,简称G.M.T.)的由来,标示在手表上,则代表此表具有两地时间功能,也就是同时可以显示原居地和另一个国度的时间。
世界协调时间 UTC
多数的两地时间表都以GMT来表示,但也有些两地时间表上看不到GMT字样,出现的反而是UTC这3个英文字母,究竟何谓UTC?事实上,UTC指的是 Coordinated Universal Time- 世界协调时间(又称世界标准时间、世界统一时间),是经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以「秒」为单位的国际原子 时所综合精算而成的时间,计算过程相当严谨精密,因此若以「世界标准时间」的角度来说,UTC比GMT来得更加精准。其误差值必须保持在0.9秒以内,若 大于0.9秒则由位于巴黎的国际地球自转事务中央局发布闰秒,使UTC与地球自转周期一致。所以基本上UTC的本质强调的是比GMT更为精确的世界时间标 准,不过对于现行表款来说,GMT与UTC的功能与精确度是没有差别的。
夏日节约时间DST
所谓「夏日节约时间」Daylight Saving Time(简称D.S.T.),是指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用,在英国则称为夏令时间(Summer Time)。这个构想于1784年由美国班杰明·富兰克林提出来,1915年德国成为第一个正式实施夏令日光节约时间的国家,以削减灯光照明和耗电开支。 自此以后,全球以欧洲和北美为主的约70个国家都引用这个做法。
系统时间
一般说来就是我们执行 date 命令看到的时间,linux系统下所有的时间调用(除了直接访问硬件时间的命令)都是使用的这个时间。
硬件时间
主板上BIOS中的时间,由主板电池供电来维持运行,系统开机时要读取这个时间,并根据它来设定系统时间(注意:系统启动时根据硬件时间设定系统时间的过程可能存在时区换算,这要视具体的系统及相关设置而定)。
世界时间
(Universal Time)世界标准时间即UTC。
地方时间
(本地时间,Local Time)由于处在不同的时区,本地时间一般与UTC是不同的,换算方法就是:
本地时间 = UTC + 时区 或 UTC = 本地时间 - 时区
二. 在Linux中查看系统时间
- #date
- FriNov723:21:34 CST 2014//本地时间
- #date -R
- Fri,07Nov201423:21:35+0800//本地时间,RFC2822格式
- #date -u
- FriNov715:21:37 UTC 2014//UTC时间
CST是什么意思?
其实CST有4中意思,所以这里显示CST是很容易被误解。
Central Standard Time (USA) UT-6:00
Central Standard Time (Australia) UT+9:30
China Standard Time UT+8:00
Cuba Standard Time UT-4:00
因此查看linux系统时间,我还是建议使用后两种方式。
如何去掉hwclock中显示的CST?
执行hwclock命令之前,添加环境变量”export LANG=C”
- #hwclock
- Sun09Nov201407:38:25 PM CST -0.161066 seconds
- #export LANG=C
- #hwclock
- SunNov919:38:352014-0.813925 seconds
三. 在Linux中查看硬件时间(BIOS时间)
使用命令可以查看BIOS硬件时间:
- hwclock --localtime
但因为BIOS里面没有时区的设置,因此有两种时间设定方法。
UTC=yes 存储UTC时间
UTC=no 存储本地LOCAL时间
查看系统是否启用了UTC方法如下:
- UTC=falseor UTC=truein file /etc/sysconfig/clock,RHEL5
- LOCAL or UTC in file/etc/adjtime,last line,RHEL6
- UTC=noor UTC=yes in file /etc/default/rcS,Debian6,Squeeze.
- LOCAL or UTC in file/etc/adjtime,last line,Debian7,Wheezy.(ifnot exist,excute hwclock --adjust)
若系统启用了UTC,则显示如下:
- # export LANG=C
- # tail -1 /etc/adjtime
- UTC
- date -R
- # date -R
- Sun,09Nov201419:36:05+0800
- hwclock
- # hwclock
- SunNov919:36:062014-0.031592 seconds
- # hwclock --localtime
- SunNov911:36:072014-0.672380 seconds //BIOS里面存的是UTC时间
若未启用UTC,则显示如下:
- #export LANG=C
- #tail -1 /etc/adjtime
- LOCAL
- #date -R
- Sun,09Nov201419:32:12+0800
- #hwclock
- SunNov919:32:132014-0.725862 seconds
- #hwclock --localtime
- SunNov919:32:142014-0.995411 seconds //BIOS里面存的是LOCAL本地时间
四、Windows和Linux双系统造成时间问题
有很多人安装了双系统Linux+Windows会发现其中一个系统时间不准。
这是因为Windows默认不使用UTC,需要将Linux中的UTC关闭。
当然网上有人修改windows的注册表将UTC打开,也是一样的,但我没试过。
五、改动UTC造成的问题
可能存在如下情况,
- 原系统设置是 “UTC=yes”,重装了系统之后采用了”UTC=no”或者相反的操作。
- 将操作系统设置“UTC=yes”的磁盘,插入原先操作系统”UTC=no”的服务器并采用新插入盘启动。
这些情况都可能会导致时间不一致。
解决办法是用ntpdate同步网络时间,并写入硬件BIOS。
比较混乱的情况下还要指定把哪个时间写入BIOS(尚未测试)
- hwclock --systohc --localtime //将LOCAL时间写入BIOS。适用于UTC=no
- hwclock --systohc --utc //将UTC时间写入BIOS,适用于UTC=yes
相关推荐
- 0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)
-
文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...
- ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes
-
为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...
- 生产环境starrocks 3.1存算一体集群部署
-
集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...
- 在CentOS上添加swap虚拟内存并设置优先级
-
现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...
- 国产深度(deepin)操作系统优化指南
-
1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...
- postgresql-15.4 多节点主从(读写分离)
-
1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...
- Docker 容器 Java 服务内存与 GC 优化实施方案
-
一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...
- 虚拟内存设置、解决linux内存不够问题
-
虚拟内存设置(解决linux内存不够情况)背景介绍 Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...
- Elasticsearch性能调优(5):服务器配置选择
-
在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...
- Es如何落地
-
一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...
- 针对Linux内存管理知识学习总结
-
现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...
- MySQL进阶之性能优化
-
概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...
- Linux Cgroups(Control Groups)原理
-
LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...
- linux 常用性能优化参数及理解
-
1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...
- 如何在 Linux 中使用 Sysctl 命令?
-
sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)