Linux的系统时间和硬件时间

一.概念:

Linux系统中时间分为系统时间和硬件时间:

系统时间是指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 月日时分年 如 1月21日13点50分2015年,sudo date 112113502015

注:

date可以打印/设定系统时间.(直接调用 date,得到的是本地时间。如果想得到UTC时间的话,使用 date -u。)

打印系统时间时,date命令会通过调用clock_gettime函数获取时间,同时会通过localtime文件(时区文件)计算出本地的时间.

设定系统时间时,date命令会通过读取localtime文件(时区文件)确定本地的时区,再调用clock_settime函数计算出本地的时间.

2)硬件时间的设置方法:hwclock --set --date="月/日/年 时:分"

注:

1)hwclock首先打开了/dev/rtc,读取硬件时钟.

2)打开/etc/adjtime文件,通过先前的记录来估算硬件时钟的偏差,并用来校正目前的时间.

3)打开/etc/localtime时区文件,将硬件时间转换为当前时区对映的时间.

-r, --show        读取并打印硬件时钟(read hardware clock and print result)

-s, --hctosys    将硬件时钟同步到系统时钟(set the system time from the hardware clock)

-w, --systohc    将系统时钟同步到硬件时钟(set the hardware clock to the current system time)

补充:

直接调用 /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

RTC

Real time clock(RTC):实时时钟是用来持久存放系统时间的设备,即便系统关闭后,它也可以靠主板上的微电池提供的电力保持系统定时.

三。总结:

我们可以通过date命令获取系统的时间,系统时间是由可编程定时/计数器产生的输出脉冲触发中断而产生的.每一个输出脉冲也叫做一个时间滴答.

在操作系统中可以通过修改grub中的内核引导参数(tick_divider)来调整时钟中断频率,例如:

我们将tick_divider=10,也就是100Hz,那么每秒就有100次时间滴答,每个时钟滴答就是10毫秒(10ms).相应的系统时间就会每10ms增1.

内核通过通过变量jiffy来记录系统启动后产生的时间滴答的总数.

tick_divider可使用下列值:

2=500 Hz

4=250 Hz

5=200 Hz

8=125 Hz

10= 100 Hz

只限于X86和X86_64架构,不支持Xen.

本文参考文献:http://blog.chinaunix.net/uid-21501855-id-3308222.html

http://jackiechen.blog.51cto.com/196075/115751/

http://www.linuxidc.com/Linux/2014-09/107029.htm

时间: 2024-11-05 17:32:32

Linux的系统时间和硬件时间的相关文章

Linux系统时间和硬件时间设置

在Linux中有硬件时钟与系统时钟两种时钟.硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟.系统时钟则是指kernel中的时钟.所有Linux相关指令与函数都是读取系统时钟的设定.因为存在两种不同的时钟,那么它们之间就会存在差异.当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作. 用date命令对系统时间进行设置后,并不会去修改硬件时钟,所以系统重启后,系统时间还算会去读取硬件时间,这就是为何date设置失效到原因. 因此,需要在设置系统时间后,将

Linux命令-更新系统时间和硬件时间

date 查看当前系统时间 yum install -y ntpdate 安装ntpdate程序 ntpdate time.windows.com 从互联网更新系统时间 date 再次查看当前系统时间 让linux自动从time.windows.com自动同步时间 vi /etc/crontab 加上一句: 00 0 1 * * root ntpdate -s time.windows.com 硬件时间: hwclock --show 显示硬件时间 hwclock --systohc 将系统时间

CentOS 6.9系统时间和硬件时间设置(转)

总结一下hwclock,这个容易晕: 1)/etc/sysconfig/clock 文件,只对 hwclock 命令有效,且只在系统启动和关闭的时候才有用(修改了其中的 UTC=true 到 UTC=false 的前后,执行 hwclock (--utc, 或 --localtime) 都没有变化,要重启系统后才生效): 2)/etc/rc.d/rc.sysinit 文件,run once at boot time,其中有从硬件时钟同步时间到系统时间的操作: 3)hwclock --localt

linux 系统时间和硬件时间设置

1.简介 Linux中有硬件时钟与系统时钟两种时钟.硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟.这个时间有主板上电池供电维持,如果主板电池电量耗尽,如果断电的话,恢复到出厂设置.系统时钟则是指kernel中的时钟.所有Linux相关指令与函数都是读取系统时钟的设定.因为存在两种不同的时钟,那么它们之间就会存在差异.当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作. 对于系统时间,我们可以用date命令查看: [email protected]:

Linux系统时间\硬件时间(date、tzselect、clock、hwclock、ntpdate)

1.系统时间和硬件时间 在Linux中有硬件时钟与系统时钟两种时钟.硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟.系统时钟则是指kernel中的时钟.所有Linux相关指令与函数都是读取系统时钟的设定.因为存在两种不同的时钟,那么它们之间就会存在差异.当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作. 用date命令对系统时间进行设置后,并不会去修改硬件时钟,所以系统重启后,系统时间还算会去读取硬件时间,这就是为何date设置失效到原因. 因此,

linux系统date命令修改时间及hwclock硬件时间

修改日期: 时间设定成2016年5月18日的命令如下: #date -s 05/18/2016 修改时间: 将系统时间设定成上午10点10分40秒的命令如下. #date -s 10:10:40 修改时区: 找到相应的时区文件 /usr/share/zoneinfo/Asia/Shanghai替换当前的/etc/localtime. 修改/etc/sysconfig/clock文件的内容为: ZONE="Asia/Shanghai" UTC=false ARC=false hwcloc

系统时钟 硬件时钟 系统时间 硬件时间 ntpd ntpdate

在Linux下,默认情况下,系统时间和硬件时间,并不会自动同步.在Linux运行过程中,系统时间和硬件时间以异步的方式运行,互不干扰.硬件时间的运行,是靠Bios电池来维持,而系统时间,是用CPU tick来维持的,相互独立. 在系统开机的时候,会自动从Bios中取得硬件时间,设置为系统时间. ntpd:平滑矫正时间,起初64秒矫正一次,后续逐步减少.且有保护功能,与源时间服务器差异过大,会停止矫正. ntpdate:跃变方式矫正时间,对时序依赖严重的应用程序,如数据库,可能会出现2次相同的时间

Linux应用层系统时间写入RTC时钟的方法

Linux内核版本:linux-3.0.35 开发板:i.MX6S MY-IMX6-EK200 系统:Ubuntu12 前言:之前写过一篇关于如何通过应用层程序读取系统时间的blog,今天再写一篇如何写入并保存RTC时钟的blog吧. 一.写入时间 1.预备知识: a.mktime 头文件:#include <time.h> 函数:time_t mktime(struct tm *timeptr) 函数说明:mktime()用来将timeptr所指的tm结构体数据换成从公元1970年1月1日0

Linux操作系统时间与BIOS硬件时间

在Linux计算机上,有两个时间,一个是硬件时间(BIOS中记录的时间),另一个是操作系统时间.硬件时钟由BIOS电池供电, 当计算机关机后,会继续运行. 时间是有时区的,无论硬件时间还是操作系统时间,都有时区,默认情况下,Ubuntu的硬件时间使用UTC时间,配置文件为 /etc/default/rcS,建议使用UTC时间:而操作系统时间的时区对应的配置文件为/etc/timezone,如果你想修改,那最好使用 sudo dpkg-reconfigure tzdata来修改时区,不建议直接修改