`

linux 系统时间/硬件时间

阅读更多

一、首先要弄清几个概念:
1. “系统时间 ”与“硬件时间

   系统时间 : 一般说来就是我们执行 date 命令看到的时间,linux系统下所有的时间调用(除了直接访问硬件时间的命令)都是使用的这个时间。
    硬件时间 : 主板上BIOS中的时间,由主板电池供电来维持运行,系统开机时要读取这个时间,并根据它来设定系统时间(注意:系统启动时根据硬件时间设定系统时间的过程可能存在时区换算,这要视具体的系统及相关设置而定)。
2. “UTC时间 ”与“本地时间
    UTC时间 :Coordinated Universal 8 e2 i( H7 t0 ^/ ^ Time 世界协调时间(又称世界标准时间、世界统一时间),在一般精度要求下,它与GMT(Greenwich Mean Time,格林威治标准时间)是一样的,其实也就是说 GMT≈UTC,但 UTC 是以原子钟校准的,更精确。
    本地时间 :由于处在不同的时区,本地时间一般与UTC是不同的,换算方法就是
本地时间 = UTC + 时区    或   UTC = 本地时间 - 时区
    时区东为正,西为负,例如在中国,本地时间都使用北京时间,在linux上显示就是 CST (China Standard Time,中国标准时,注意美国的中部标准时Central Standard Time也缩写为CST,与这里的CST不是一回事!),时区为东八区,也就是 +8 区,所以 CST=UTC+(+8小时) 或 UTC=CST-(+8小时)。

二、时间命令
1. 系统时间 date
   直接调用 date,得到的是本地时间。如果想得到UTC时间的话,使用 date -u。
[12-01 19:07> ~]$ date
2009年 12月 07日 星期一 14:22:20 CST
[12-01 19:07> ~]$ date -u
2009年 12月 07日 星期一 06:22:22 UTC
2. 硬件时间 /sbin/hwclock
   直接调用 /sbin/hwclock 显示的时间就是 BIOS 中的时间吗?未必!这要看 /etc/sysconfig/clock 中是否启用了UTC,如果启用了UTC(UTC=true),显示的其实是经过时区换算的时间而不是BIOS中真正的时间,如果加上 --localtime 选项,则得到的总是 BIOS 中实际的时间.
[12-01 19:07> ~]# hwclock
2009年12月07日 星期一 14时28分43秒  -0.611463 seconds
[12-01 19:07> ~]# hwclock --utc
2009年12月07日 星期一 14时28分46秒  -0.594189 seconds
[12-01 19:07> ~]# hwclock --localtime
2009年12月07日 星期一 06时28分50秒  -0.063875 seconds
3. /etc/localtime
   这个文件用来设置系统的时区,将 /usr/share/zoneinfo/ 中相应文件拷贝到/etc下并重命名为 localtime 即可修改时区设置,而且这种修改对 date 命令是及时生效的。不论是 date 还是 hwclock 都会用到这个文件,会根据这个文件的时区设置来进行UTC和本地之间之间的换算。
4. /etc/sysconfig/clock
   这个文件只对 hwclock 有效,而且似乎是只在系统启动和关闭的时候才有用,比如修改了其中的 UTC=true 到 UTC=false 的前后,执行 hwclock (--utc, 或 --localtime) 都没有变化,要重启系统后才生效。注:如果设置 UTC=false 并重启系统后,执行一些命令结果如下:
date                 2009年 12月 07日 星期一 19:26:29 CST
date -u              2009年 12月 07日 星期一 11:26:29 UTC
hwclock              2009年12月07日 星期一 19时26分30秒  -0.442668 seconds
hwclock --utc        2009年12月08日 星期二 03时26分31秒  -0.999091 seconds
hwclock --localtime  2009年12月07日 星期一 19时26分32秒  -0.999217 seconds
可见,如果不使用UTC,BIOS时间(红色部分)就是系统本地时间,而且注意这时执行 hwclock --utc 得到的结果没有任何意义,因为这里我们已经禁用了UTC,而且也明显不符合“本地时间=UTC+时区”的关系。

三、linux与windows双系统间的时间同步
    系统启动和关闭时,硬件时间与系统时间之间的同步有两种方式(假设在中国, 用CST代表本地时间 ):

方式A: 使用UTC(对linux就是 /etc/sysconfig/clock 中 UTC=true)
       开机 : BIOS - - - - - ---- >UTC(将BIOS中的时间看成是UTC)------ ( 时区变化 ) ----->CST
    关机 : CST ------- ( 时区变化 ) ----- >UTC-------存储到------>BIOS

方式B: 不
使用UTC(对linux就是 /etc/sysconfig/clock 中 UTC=false)
       开机 : BIOS - - - - - ------------------ >CST(将BIOS中的时间看成是CST)
    关机 : CST ------ ---存储到------>BIOS

通过设定 /etc/sysconfig/clock,linux可以支持这两种方式,然而windows只支持方式B(至少是默认支持B,而我不知道怎么能让它支 持A),那么在双系统情况下,如果linux设成A方式,那么在linux与windows系统切换时一定会造成时间混乱的,解决办法就是将linux中 的UTC禁用,也设成B方式就可以了。

注:可以通过 hwclock --hctosys 来利用硬件时间来设置系统时间(注意不是简单的复制BIOS中的时间为系统时间,要看是否使用UTC,如果使用的话则要做时区换算),通过 hwclock --systohc 来根据系统时间设置硬件时间(也要看是否启用UTC来决定是否做时区换算)。总之,不论使用 --systohc 还是 --hctosys,同步后直接运行不带参数的 hwclock 得到的时间与直接运行 date 得到的时间应该一致,这个时间是否就是BIOS中的时间(hwclock --localtime)那就不一定了,如果启用了UTC就不是,没启用UTC就是。
而且好要注意:在系统中手动使用 hwclock hwclock --set --date='yyyy-mm-dd' 来设置BIOS时间只在系统运行时有效,因为当系统关闭时,还会按设定好的方式根据系统时间来重设BIOS时间的,于是手动的设置便被覆盖掉了。
分享到:
评论

相关推荐

    修改linux系统和硬件时间

    ### 修改Linux系统和硬件时间 #### 一、Linux时钟的概念与分类 在理解如何修改Linux系统的时钟之前,我们先来了解一下Linux时钟的基本概念及其分类。 **1.1 Linux时钟概述** Linux系统中存在两种类型的时钟:...

    linux系统时间和硬件时钟问题(date和hwclock)

    ### Linux系统时间和硬件时钟问题详解 #### 一、核心概念理解 在深入探讨Linux系统时间和硬件时钟的问题之前,我们需要先明确几个重要的概念。 **1. 系统时间与硬件时间** - **系统时间**: 当我们在Linux系统中...

    linux 操作系统 GTK /proc文件 系统监视器

    1. **CPU监控**:通过读取`/proc/stat`文件,可以计算出CPU的用户时间、系统时间、空闲时间和等待I/O完成的时间,从而得到CPU的总体使用率。 2. **内存监控**:通过解析`/proc/meminfo`,可以获取总内存、已用内存...

    LINUX 下C++ 获取系统时间和设置时间

    在Linux中,时间主要分为两类:系统时间(System Time)和硬件时钟(Hardware Clock)。系统时间是操作系统维护的时间,用于所有进程的计时,可以通过`date`命令查看。硬件时钟则是计算机BIOS中保存的时间,通常与...

    linux的Qt设置系统时间

    总结,通过Qt 4.8.5,我们可以利用`QDateTime`和`QProcess`类来获取和设置Linux系统的日期和时间,以及管理时区。在进行这些操作时,理解Linux的命令行工具和权限管理是非常重要的。同时,要确保代码的安全性和用户...

    ARM2440平台LINUX系统时间的设置修改方法

    在深入探讨ARM2440平台上LINUX系统时间的设置与修改方法之前,首先需要理解系统时间与硬件时间的概念及其在Linux环境下的作用。 - **硬件时间**:指的是计算机主板上内置的实时时钟(RTC),即我们常说的“BIOS时钟...

    linux系统时间设置,和大家分享分享linux

    总之,理解Linux系统时钟和硬件时钟的概念以及如何在两者之间进行转换和同步,对于日常的系统管理和维护是必不可少的。通过熟练掌握`date`、`hwclock`或`clock`命令,可以有效地管理Linux系统的日期和时间,从而确保...

    linux系统上使用qt修改开发板时间

    在Linux系统上,开发人员有时需要对开发板的时间进行调整,特别是在进行自动化测试或系统调试时。Qt是一个流行的跨平台应用程序开发框架,它提供了丰富的GUI控件,包括QTimeEdit和QDateEdit,用于处理时间和日期。本...

    linux系统时间修改及同步等

    在Linux系统中,时间管理是一项重要的任务,...总的来说,Linux系统时间的管理和同步涉及多个层面,包括系统时钟、硬件时钟、NTP服务和时区设置。理解这些概念并正确操作,对于保持系统正常运行和数据一致性至关重要。

    Linux系统时间NTP同步设置

    ### Linux系统时间NTP同步设置 #### 知识点概览 1. **NTP(Network Time Protocol)简介** 2. **Linux系统日期与时间查看命令** 3. **硬件时钟与系统时钟同步** 4. **手动进行NTP同步** 5. **定时任务设置自动NTP...

    linux 系统时间设置方法

    Linux 系统时间设置方法 Linux 系统时间设置是指通过编程方式或命令行方式设置 Linux 系统的时间。在 Linux 系统中,时间设置是非常重要的,因为空间时间的正确性直接影响到系统的稳定性和安全性。 一、编程方式...

    嵌入式Linux系统移植.pdf

    "嵌入式Linux系统移植" 嵌入式Linux系统移植是指将Linux操作系统移植到嵌入式设备中,以满足各种应用需求。嵌入式Linux系统移植的重要性在于其广泛的应用场景,例如手机、洗衣机、汽车等设备都需要嵌入式Linux系统...

    linux调整系统时间和时区的方法

    ### 一、理解Linux系统时间和时区 Linux中有两种类型的时钟:系统时钟(System Clock)和硬件时钟(Real Time Clock,RTC)。系统时钟是在内核中维护的时间,而硬件时钟是主板上的CMOS芯片存储的时间,由电池供电,在...

    linux赋予普通用户修改系统时间权限

    ### Linux赋予普通用户修改系统时间权限 在Linux环境中,为了保证系统的安全性,通常只有管理员(通常是root用户)具有修改系统时间的权限。然而,在某些情况下,我们可能需要让普通用户也能够修改系统时间,比如在...

    Linux系统裁减4/5

    在IT领域,Linux系统因其开源、稳定和高度可定制性而广受青睐。"Linux系统裁减4/5"这个主题通常指的是一个系列教程或文章的第四部分,旨在教会用户如何根据特定需求优化和简化Linux操作系统。在这个过程中,主要涉及...

    Linux系统时间和硬件时间

     系统时间: 一般说来是我们执行 date 命令看到的时间,linux系统下所有的时间调用(除了直接访问硬件时间的命令)都是使用的这个时间。  硬件时间: 主板上BIOS中的时间,由主板电池供电来维持运行,系统开机时要...

    自动调整linux系统时间和时区与Internet时间同步

    自动调整 Linux 系统时间和时区与 Internet 时间同步 Linux 系统时间和时区调整是 Linux 系统维护中非常重要的一方面。 Linux 系统的时间和时区设置将直接影响到系统的运行和应用程序的正确运行。因此,了解如何...

    linux/麒麟/ubuntu 下qt4.8.7安装包

    2. 开始编译过程,这可能需要一些时间,取决于你的硬件性能: ``` make -j $(nproc) ``` 3. 最后,使用`sudo`权限将编译好的Qt安装到系统路径: ``` sudo make install ``` ### 设置环境变量 为了让系统...

    修改linux时间。现在才真正弄明白。。。。

    修改Linux系统时间主要有以下几个步骤: 1. 修改系统时间: 使用`date`命令可以临时修改系统时间,但这种改变不会持久,重启后会恢复。如果要永久修改,需要使用`timedatectl`命令(在较新的Linux发行版中)或`...

    Linux系统下安装gstreamer环境

    在Linux系统下安装GStreamer环境是一项对于多媒体应用开发者而言至关重要的技能。GStreamer是一个开源的媒体框架,用于构建音视频应用程序,它提供了丰富的插件集合,可以处理多种媒体格式和编码方式。以下是从给定...

Global site tag (gtag.js) - Google Analytics