linux系统中有两种时钟:
系统时钟:由linux内核通过cpu的工作频率进行计时,系统启动时内核会自动读取硬件时钟,然后由系统时钟独立运行,之后所有的linux的指令与函数都是读取系统的时钟设定
硬件时钟:主板时钟设备进行计时,可通过bios进行设置。
1.date详解
*(1)date常规作用
用于查看Linux系统时间
使用方式 : date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
## > 1>. 显示时间
date命令可以按照指定格式显示日期,只键入date则以默认格式显示当前时间。 在命令行里键入“date”,查看当前系统时间

## > 2>.更改日期时间
> 一般格式:
月日时分年.秒
> 使用特定参数-s,
–set=STRING set time described by STRING(用字符串描述的设置时间)
注意:date -s 只有root才能设置,其他用户只能查看 ```
设置格式一般为:
设置日期为2020年01月01日,时间为00:00:00

设置具体时间,7:18:59 (设置时间时,不会对日期作出修改)

设置全部时间(有多种写法,只列举几种,剩下的请读者自己开动小脑筋哦,照猫画虎~~),使用时取任意一种即可。




(2)date参数详解
**1>.所有参数**
%n : 下一行
%t : 跳格
%H : 小时(00-23)
%I : 小时(01-12)
%k : 小时(0-23)
%l : 小时(1-12)
%M : 分钟(00-59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00-60)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区
%a : 星期几 (Sun-Sat)
%A : 星期几 (Sunday-Saturday)
%b : 月份 (Jan-Dec)
%B : 月份 (January-December)
%c : 直接显示日期与时间
%d : 日 (01-31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001-366)
%m : 月份 (01-12)
%U : 一年中的第几周 (00-53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0-6)
%W : 一年中的第几周 (00-53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000-9999)
%F :相当于%Y-%m-%d
上述格式不必全都记住,只需要掌握几个常用的即可。例如%Y表示年,%m表示月,%d表示日,%H表示小时,%M表示分钟,%S表示秒,%s表示从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数,相当于time函数,%w表示一周中的第几天。

一般用%F与%X

2>.常用命令参数
-d : 查看经过计算后的时间
应用实例: 例如:查看当前时间过后三年的时间和当前时间三年前的时间(‘-’表示当前时间的前几年,“+”表示当前时间的后几年)

查看当前时间过后三月(天)的时间和当前时间三年月(天)的时间(‘-’表示当前时间的前几月(天),“+”表示当前时间的后几月(天))


获取当前时间距离1970年0时0分0秒所经历的秒数,保存在变量中:

(3)date使用时注意事项
这里说的是系统时间,是linux由操作系统维护的。
在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date
-s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。 如果要确保修改生效可以执行如下命令。
#clock –w 这个命令强制把系统时间写入CMOS。
2.clock详解
(1)clock作用
**用法**:clock [--adjust][--debug][--directisa][--getepoch][--hctosys][--set --date="<日期时间>"][--setepoch --epoch=< >][--show][--systohc][--test][--utc][--version]
作用:Linux clock命令用于调整 RTC 时间。 RTC 是电脑内建的硬件时间,执行这项指令可以显示现在时刻,调整硬件时钟的时间,将系统时间设成与硬件时钟之时间一致,或是把系统时间回存到硬件时钟。
(2)clock参数详解
用法:
hwclock [功能] [选项...]
功能:
-h, --help 显示此帮助并退出
-r, --show 读取硬件时钟并打印结果
--set 将 RTC 设置为 --date 指定的时间
-s, --hctosys 从硬件时钟设置系统时间
-w, --systohc 从当前系统时间设置硬件时钟
--systz 基于当前时区设置系统时间
--adjust 根据自上次时钟设置或调整后的系统漂移
来调整 RTC
-c, --compare 定期将系统时钟与 CMOS 时钟相比较
--getepoch 打印内核的硬件时钟纪元(epoch)值
--setepoch 将内核的硬件时钟纪元(epoch)值设置为
--epoch 选项指定的值
--predict 预测 --date 选项所指定时刻读取到的 RTC 值
-V, --version 显示版本信息并退出
选项:
-u, --utc 硬件时钟保持为 UTC 时间
--localtime 硬件时钟保持为本地时间
-f, --rtc <文件> 代替默认文件的特殊 /dev/... 文件
--directisa 直接访问 ISA 总线,而非 /dev/rtc
--badyear 忽略 RTC 年份(由于 BIOS 损坏)
--date <时间> 指定要设置的硬件时钟时间
--epoch <年> 指定作为硬件纪元(epoch)值起始的年份
--noadjfile 不访问 /etc/adjtime;需要使用 --utc 或 --localtime 选项
--adjfile <文件> 指定调整文件的路径;
默认为 /etc/adjtime
--test 不更新,只显示将进行什么操作
-D, --debug 调试模式
应用实例:
查看硬件时间


**
设置硬件时钟时间

显示utc硬件时钟时间

## 3.二者之间的区别
**
date是查看当前系统时间的,clock是查看硬件时间
当修改时间,二者查看时间时显示时间相同

修改时间后,查看到的时间不同(当然也可以修改硬件时钟时间)

本文详细介绍了Linux系统中的两种时钟——系统时钟和硬件时钟,以及它们的区别。重点讲解了date命令的使用,包括显示和设置日期时间,以及date参数的详解。同时,解释了clock命令的功能,如何查看和调整硬件时钟时间。最后,阐述了date和clock的主要差异,强调了系统时间与硬件时间同步的重要性。
449

被折叠的 条评论
为什么被折叠?



