Linux的系统时间和硬件时间
来源:互联网 发布:电脑网络限制 编辑:程序博客网 时间:2024/05/01 05:22
一.概念:
Linux系统中时间分为系统时间和硬件时间:
系统时间是指Linux内核中的时间;
硬件时间是指主板上的硬件时钟所计算的时间。不同的时间,设置的方法也不一样。
详细说明如下:
1. “系统时间”与“硬件时间”
系统时间: 一般说来就是我们执行 date 命令看到的时间,linux系统下所有的时间调用(除了直接访问硬件时间的命令)都是使用的这个时间。
硬件时间: 主板上BIOS中的时间,由主板电池供电来维持运行,系统开机时要读取这个时间,并根据它来设定系统时间(注意:系统启动时根据硬件时间设定系统时间的过程可能存在时区换算,这要视具体的系统及相关设置而定)。
2. “UTC时间”与“本地时间”
UTC时间:Coordinated Universal8 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小时)。
Linux系统中时间分为系统时间和硬件时间:
系统时间是指Linux内核中的时间;
硬件时间是指主板上的硬件时钟所计算的时间。不同的时间,设置的方法也不一样。
详细说明如下:
1. “系统时间”与“硬件时间”
系统时间: 一般说来就是我们执行 date 命令看到的时间,linux系统下所有的时间调用(除了直接访问硬件时间的命令)都是使用的这个时间。
硬件时间: 主板上BIOS中的时间,由主板电池供电来维持运行,系统开机时要读取这个时间,并根据它来设定系统时间(注意:系统启动时根据硬件时间设定系统时间的过程可能存在时区换算,这要视具体的系统及相关设置而定)。
2. “UTC时间”与“本地时间”
UTC时间:Coordinated Universal8 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="月/日/年 时:分"
补充:
直接调用 /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
注:
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)
-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
0 0
- Linux的系统时间和硬件时间
- LInux系统时间和硬件时间
- linux 设置系统时间和硬件时间
- linux 系统时间和硬件时间设置
- Linux 系统时间和硬件时间
- linux系统时间和硬件时间设置
- linux系统时间和硬件时间
- linux系统时间和硬件时间
- linux修改系统和硬件时间
- Linux 设置系统时间和硬件时间同步
- linux 设置系统时间和硬件RTC时间
- linux 设置系统时间和硬件RTC时间
- linux系统时间和硬件时钟时间 FAQ
- linux系统时间同步,硬件时钟和系统时间同步,时区的设置
- 【转】Linux--系统时间/硬件时间的设置
- Linux的硬件时间及系统时间调用流程
- ubuntu 系统时间和硬件时间的几点认识
- linux硬件时间及系统时间
- AES 加密后进行 BASE64 转码
- 最受程序员欢迎的公司榜单发布
- iOS将标准时间转化为时间戳
- 【Unity3D插件教程及源码解读】序
- 利用python简化sql server数据导入导出
- Linux的系统时间和硬件时间
- Eclipse无法生成class文件的问题
- tuxedo 不能启动 没有有效的BBL可用(.5服务器)
- mtk82平台上通过libcamera_client.so调用camera预览流程
- 一个美国人到中国当产品经理的心得:中国App设计真好!
- iOS将字符串转化为标准时间
- 把重复代码提取成方法
- power by dedecms什么意思,power by dedecms怎么去掉
- InputStream重新读取