date与clock详解与区别

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

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是查看硬件时间

当修改时间,二者查看时间时显示时间相同

在这里插入图片描述

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值