Linux时钟与时钟函数nullLinux时钟与时钟函数Linux时钟与时钟函数主要内容主要内容一、Linux时钟概念二、Linux时钟原理三、Linux时钟设置四、Linux时钟函数一、Linux时钟概念一、Linux时钟概念1、Linux两个时钟概念1、Linux两个时钟概念硬件时钟
又叫RTC时钟(Real Time Clock)、CMOS时钟
由主板电池驱动的时钟振荡器生成
用于操作系统关机时记录时间
软件时钟
又叫系统时钟(System Clock)、内核时钟
系统时钟源于时钟中断
操作系统关机时系统时钟不存在2、Linux两个时间概念2、...
nullLinux时钟与时钟函数Linux时钟与时钟函数主要内容主要内容一、Linux时钟概念二、Linux时钟原理三、Linux时钟设置四、Linux时钟函数一、Linux时钟概念一、Linux时钟概念1、Linux两个时钟概念1、Linux两个时钟概念硬件时钟
又叫RTC时钟(Real Time Clock)、CMOS时钟
由主板电池驱动的时钟振荡器生成
用于操作系统关机时记录时间
软件时钟
又叫系统时钟(System Clock)、内核时钟
系统时钟源于时钟中断
操作系统关机时系统时钟不存在2、Linux两个时间概念2、Linux两个时间概念Wall-clock
“墙上时钟时间”
从“1970.1.1 00:00:00 UTC”开始经过的时间
由全局变量xtime记录
System-time
系统启动后经过的时间
由全局变量jiffies记录
单位是时钟滴答3、时区的概念3、时区的概念时区的由来
地球自转造成地域时间差
1884年在华盛顿召开的国际经度会议上,
将全球划分为24个时区
中时区(零时区)、东1-12区、西1-12区
常用时区缩写
UTC:Universal Time Coordinated
GMT:Greenwich Mean Time(GMT=UTC)
CST:Chinese Standard Time(CST=UTC+8)世界时区图世界时区图4、夏令时的概念和由来4、夏令时的概念和由来夏令时的概念
又叫夏时制、日光节约时间
常用缩写DST(Daylight Saving Time)
是一种为节约能源而人为规定地方时间的
,制度实行期间所采用的统一时间称为“夏令时间”
夏令时的由来
本杰明·富兰克林首次提出夏令时的思想
1916年,德国首先实行夏令时
目前全世界有近110个国家每年实行夏令时5、夏令时的利弊5、夏令时的利弊优点
充分利用光照,节约了能源
燃料的使用减少了,温室气体排放也相应减少
有人认为夏令时对患有夜盲症的人大有好处
也让人们养成了早睡早起的好习惯
弊端
时间更换对人们生活带来不便
有人认为夏令时在旅游业和能源消耗上获利不明显
扰乱了人类和动物的生物钟6、中国的夏令时6、中国的夏令时1986年至1991年,中华人民共和国在全国范围实行了六年夏令时
规定每年从4月中旬的第一个星期日2时整(北京时间)到9月中旬第一个星期日的凌晨2时整(北京夏令时)
夏令时制度在1992年停止施行二、Linux时钟原理二、Linux时钟原理1、时钟电路的组成1、时钟电路的组成电脑主板时钟电路组成
晶振
时钟芯片(常见ICS和Winbond)
电容、电感、电阻等2、时钟频率的来源2、时钟频率的来源时钟频率的来源
时钟振荡器
时钟振荡器组成
晶体振荡器(简称晶振)
时钟芯片
时钟振荡器原理
晶体压电效应与压电谐振
有源放大反馈电路时钟芯片原理图时钟芯片原理图主板时钟分布图主板时钟分布图3、系统时钟的成因——时钟中断3、系统时钟的成因——时钟中断时钟中断的概念
由时钟中断电路按照一定的时间周期向CPU发出的中断
时钟中断的周期称为一个滴答(tick)
时钟中断电路的组成:
可编程逻辑定时器
中断管理器3、系统时钟的成因——时钟中断3、系统时钟的成因——时钟中断时钟中断的主要工作
更新系统启动后的时间流失(即更新jiffies)
更新系统“墙上时钟时间”(即更新xtime)
计算进程的时间片
更新资源计数
引发软件定时器4、系统时钟运作机制4、系统时钟运作机制三、Linux时钟设置三、Linux时钟设置1、Linux时钟配置文件(1)1、Linux时钟配置文件(1)Linux时钟涉及到的配置文件
/etc/sysconfig/clock
/usr/share/zoneinfo
/etc/localtime
/etc/rc.d/rc.sysinit1、Linux时钟配置文件(2)1、Linux时钟配置文件(2)/etc/sysconfig/clock
包含系统时区信息
决定硬件时钟是UTC时钟还是本地时钟1、Linux时钟配置文件(3)1、Linux时钟配置文件(3)/usr/share/zoneinfo/
包含世界全部时区信息1、Linux时钟配置文件(4)1、Linux时钟配置文件(4)/etc/localtime
是Linux的时区配置文件
是/usr/share/zoneinfo目录下对应文件的符号连接
如上海应为:/usr/share/zoneinfo/Asia/Shanghai1、Linux时钟配置文件(5)1、Linux时钟配置文件(5)/etc/rc.d/sysinit
是Linux的启动脚本之一,其中包含了系统时钟初始化过程
该脚本运行/sbin/hwclock程序,把当前的硬件时钟复制为系统时钟
该脚本会读取/etc/sysconfig/clock文件的设置,从而确定硬件时钟是本地时钟还是UTC时钟rc.sysinit时钟初始化部分示例rc.sysinit时钟初始化部分示例2、Linux时钟命令(1)2、Linux时钟命令(1)查看系统系统时钟
date
设置系统时钟
date MMDDhhmmYYYY.ss
查看硬件时钟
hwclock –show
clock --show
设置硬件时钟
hwclock --set --date=“07/07/06 10:19” (月/日/年 时:分:秒)
clock --set --date=“07/07/06 10:19” (月/日/年 时:分:秒) 2、Linux时钟命令(2)2、Linux时钟命令(2)硬件时钟和系统时钟的同步
重新启动系统,系统时间会读取硬件时间,实现同步
硬件时钟与系统时钟同步:
hwclock --hctosys
clock --hctosys
系统时钟和硬件时钟同步:
hwclock --systohc
clock --systohcLinux时钟命令示例(1)Linux时钟命令示例(1)Linux时钟命令示例(2)Linux时钟命令示例(2)3、Linux时区命令3、Linux时区命令查看当期时区
date -R
cat /etc/sysconfig/clock
设置当前时区
方法一:Linux系统安装时配置时区
方法二:修改时区环境变量TZ='Asia/Shanghai'
方法二:使用Linux时区设置命令tzselect
方法三:复制相应的时区文件,替换系统默认时区
ln -sf /usr/share/zoneinfo/$主时区/$次时区 /etc/localtimeLinux时区命令示例Linux时区命令示例2、Linux夏令时配置2、Linux夏令时配置夏令时存储在时区信息文件中,位于目录/usr/share/zoneinfo/下
夏令时查看方法:
cd /usr/share/zoneinfo/
zdump -v Asia/Shanghai夏令时配置举例夏令时配置举例四、Linux时钟函数四、Linux时钟函数1、Linux时钟数据类型1、Linux时钟数据类型常用时钟数据类型
time_t
struct timeval
struct tm
struct timezone
struct timeb
头文件
2、Linux常用时钟函数(1)2、Linux常用时钟函数(1)获取系统时间
time_t time(time_t *t);
取得从1970年1月1日至今的秒数
int gettimeofday(struct timeval *tv, struct timezone *tz);
返回当前距离1970年的秒数和微妙数,以及时区
int ftime(struct timeb *tp);
获取当前时间日期、时区及夏令时标志2、Linux常用时钟函数(2)2、Linux常用时钟函数(2)设置系统时间
int settimeofday(const struct timeval *tv, const struct timezone *tz);
功能:设置系统时间及时区
返回值:成功返回0,失败返回-12、Linux常用时钟函数(3)2、Linux常用时钟函数(3)时间格式转换
struct tm* gmtime(const time_t *t);
time_t类型转换为struct tm类型
stuct tm* localtime(const time_t *t);
time_t类型转换为struct tm类型
time_t mktime(struct tm* timeptr);
struct tm类型转换为time_t类型2、Linux常用时钟函数(4)2、Linux常用时钟函数(4)时间格式转换
char *asctime(const struct tm* timeptr);
struct tm类型转换为时间字符串类型
字符串格式示例:Sat Oct 28 02:10:06 2010
char *ctime(const time_t *timep);
time_t类型转换为时间字符串类型
字符串格式同asctime
size_t strftime(char *s, size_t max, const char *format, const struct tm *tm);
将struct tm格式的时间tm按照format指定的字符串格式format输出到数组s中
字符串格式示例:“%Y-%m-%d %H:%M:%S”2、Linux常用时钟函数(5)2、Linux常用时钟函数(5)时间运算
double difftime(time_t t1, time_t t2);
功能:计算两个时间t1和t2的时间差
返回值:返回二者时间差,单位秒3、各时间函数的关系3、各时间函数的关系4、时间函数应用举例4、时间函数应用举例应用要求
获取当前系统本地时间,并按照”yyyy-mm-dd HH:MM:SS”的格式打印输出Thank YouThank Younullroot@test test]# more time.sh #!/bin/bash date_start=`date|awk -F"[ :]" '{print $4*3600 + $5*60 +$6}'` yourcommnd date_end=`date|awk -F"[ :]" '{print $4*3600 + $5*60 +$6}'` time=`expr "$date_end" - "$date_start"` echo "your command will take $time seconds"
本文档为【Linux时钟与时钟函数】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。