Linux下时间的查看
- 格式:pdf
- 大小:249.74 KB
- 文档页数:2


时间篇之linux系统时间和RTC时间
⼀、linux系统下包含两个时间:系统时间(刚启动时读取的是rtc时间)和RTC时间。
⼀般情况下都会选择芯⽚上最⾼精度的定时器作为系统时间的定时基准,
以避免在系统运⾏较长时间后出现⼤的时间偏移。特点是掉电后不保存。
所以⼀旦你重启机器后,那么系统需要重新从RTC上重新获取时间,保存到系统内核⽂件中。
RTC(real_time clock)驱动程序,可以在E:\linux内核\linux-2.6.0\linux-2.6.0\drivers\char\rtc.c中找到。
设备接⼝就是 /dev/rtc, 他负责跟rtc打交道,并读取rtc中维护的时间.
它是⼀个从系统定时器中独⽴出来的虚拟设备,⽤于设置系统时钟,提供报警器或周期性的定时器.
那么系统时间⼀直运⾏吗? 显然在操作系统关闭或重启期间,服务器宕机期间,整个服务器的时间就依赖于RTC芯⽚。
从这我们看出linux系统时间和RTC时间是两套独⽴的计时体系,但它们之间⼜是相互依存的:
1)刚安装操作系统后,若在安装过程不设置系统时间,那么默认的系统时间就是从服务器的RTC芯⽚中获取当前的硬件时间;
2)在linux操作系统中,⼀旦修改系统时间后,⼜重启或关闭Linux系统,则OS通常会将系统时间更新到RTC;
3)在操作系统再次启动的时候,Linux OS则会再次从RTC中获取当前的时间。
服务器异常下电后,待操作系统重新启动后,发现系统时间发⽣了跳变?
其原因通常是:修改了操作系统时间,在服务器异常下电后,操作系统并未及时将修改后的时间更新到RTC,导致操作系统重新启动后,就会从RTC芯⽚中加载了之前“⽼”的时间,从⽽在操作系统层⾯体现为“时间跳变”
⼆、关于jiffies
⼀次中断时间间隔叫⼀个tick,即每个触发周期的时间叫做tick,⼀秒内时钟中断的次数(每个时间间隔就是⼀次)等于Hzhz别名就是tick rate(HZ)linux系统查看hz:[root@k3master ~]# cat /boot/config-`uname -r` | grep 'CONFIG_HZ='CONFIG_HZ=10001hz就是每秒1000次中断每次时钟中断处理程序即每发⽣⼀次tick都会增加jiffies该变量的值,jiffies⼀秒内增加的值也就是Hz(频率),⽐如:linux下默认是 1000次时钟中断次数/秒
linux shell获取当前时间命令详解
当出现一个获取一个时间戳或时间差需求时,那么我们该使用什么命令来获取当前时间呢?下面由店铺为大家整理了linux shell获取当前时间的命令的相关知识,希望大家喜欢!
1. Linux shell获取时间的相关命令
time命令:获取一个程序的执行时间,可以获取到实际运行时间以及程序在用户态和内核态分别的时间,大部分的性能测试,可能只需要关注实际时间。
time命令的使用就很简单了,在原有的要运行的程序(可执行文件、脚本等任何可执行程序)之前加上time即可。
time命令的常用选项
使用time,常用的选项是:-f和-p。其中-f后面指定一个格式串,控制time的输出的格式,默认的time输出是real、user、sys三行以xmxxx.xxxs的格式输出,通过-f可以控制。
-p选项也是格式,表示使用posix标准的格式,主要的区别是显示的时间都是以s为单位的,具体关于格式的问题参考man time的帮助内容就知道了。
-f选项没法工作?弄不清楚为何-f和-o等选项都无法工作,知道的请补充。(-p是工作的)
另一种控制格式的方法是设置TIMEFORMAT环境变量,具体参考man time可以知道这些格式控制符分别表示什么。举例如下:
#time pwd
/home/sgeng2
real 0m0.000s
user 0m0.000s
sys 0m0.000s
#export TIMEFORMAT="real time %E, user time %U,sys
time %S"
#time pwd /home/sgeng2
real time 0.000, user time 0.000,sys time 0.000
#time -p pwd
/home/sgeng2
real 0.00
user 0.00
sys 0.00
#
time命令的输出的问题
linux中从1970年1月1日的时间计算指令
在Linux中,你可以使用`date`指令来计算从1970年1月1日(也被称为Unix时间戳的开始)到现在的时间差。具体来说,你可以使用`date +%s`来获取当前的时间戳,即从1970年1月1日00:00:00 UTC到现在的秒数。
例如,如果你想计算从1970年1月1日到现在的时间差,你可以在终端中输入以下命令:
```bash
date +%s
```
这将返回一个数字,表示从1970年1月1日00:00:00 UTC到现在的秒数。
另外,如果你有一个特定的时间戳,并且你想将其转换为人类可读的日期和时间格式,你可以使用`date`指令的`-d`选项。例如,如果你有一个时间戳`1677331200`,你可以使用以下命令将其转换为日期和时间:
```bash
date -d @1677331200
```
这将返回一个类似于"Wed Jun 21 00:00:00 UTC 2023"的日期和时间字符串。
hwclock命令参数及⽤法详解--Linux显⽰设置硬件时钟命令
hwclock(hardware clock)
功能说明:显⽰与设定硬件时钟。
语 法:hwclock [--adjust][--debug][--directisa][--hctosys][--show][--systohc][--test][--utc][--version][--set --date=<⽇期与时间>]
补充说明:在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画⾯设定的时钟。系统
时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独⽴运作。所有Linux相关指令与函数都
是读取系统时钟的设定。
参 数: --adjust hwclock每次更改硬件时钟时,都会记录在/etc/adjtime⽂件中。使⽤--adjust参数,可使hwclock根据先前的记录来估算硬件时钟
的偏差,并⽤来校正⽬前的硬件时钟。--debug 显⽰hwclock执⾏时详细的信息。
--directisa hwclock预设从/dev/rtc设备来存取硬件时钟。若⽆法存取时,可⽤此参数直接以I/O指令来存取硬件时钟。
--hctosys 将系统时钟调整为与⽬前的硬件时钟⼀致。
--set --date=<⽇期与时间> 设定硬件时钟。
--show 显⽰硬件时钟的时间与⽇期。
--systohc 将硬件时钟调整为与⽬前的系统时钟⼀致。
--test 仅测试程序,⽽不会实际更改硬件时钟。
--utc 若要使⽤格林威治时间,请加⼊此参数,hwclock会执⾏转换的⼯作。
--version 显⽰版本信息。
使⽤⽰例
⽰例⼀ hwclock命令与clock命令是⼀个东西[~]# type -a hwclock
hwclock is /sbin/hwclock
hwclock is /usr/sbin/hwclock