hwclock是用于操作硬件时钟的日期和时间,属于RTC(Real-Time Clock)相关的命令。hwclock可以显示当前RTC时间,可以将硬件时钟设置为指定时间,可以基于系统时间来设置硬件时钟,或者基于硬件时钟来设置系统时间。hwlock还包含补偿硬件时钟系统漂移的设施。系统管理人员可以定期运行hwclock,以从硬件时钟中增加或减少时间,来补偿系统时钟所产生的时间漂移。通常在操作系统中,当时钟继续运行过程中,系统时钟总是以一定的速度丢失或增加时间。
硬件时钟所存储的信息仅包含这些数据项:年、月、日、小时、分钟和秒,而无法存储诸如:时间标准、本地时间或世界通用时间(UTC)等信息,也无法设置夏时制 (DST,即:Daylight Saving Time)。
hwlock实用程序将其设置保存在/etc/adjtime文件中,该文件是通过hwclock命令进行第一次更改时创建的,例如,当管理人员手动设置时间或将硬件时钟与系统时间同步时。
注意,在RedHat Enterprise Linux6中,hwclock命令在每次系统关机或重新启动时自动运行,而在RedHat Enterprise Linux7中,该机制已被取消。当系统时钟通过网络时间协议 (NTP) 或精确时间协议 (PTP) 与远程时钟服务器同步时间时,系统内核每11分钟会自动同步硬件时钟到系统时钟。
hwclock命令的格式如下所示:
hwclock [功能] [选项...]
例如使用hwclock命令显示硬件时间RTC,直接键入命令即可。注意,此时只是显示当前的硬件时钟,内容包含了星期、日期、时间、时区等。能够显示时区信息是由于借用了系统时间的相关信息。参见如下示例,显示当前时区的硬件时间,可以精确到ns:
[root@linux ~]# hwclock
2018年10月17日 星期三 11时30分53秒 -0.816420 秒
关于hwclock的常用功能选项说明如下:
--set 将硬件时钟设置为 --date指定的时间,格式为:--date=指定的日期和时间字符串
-s, --hctosys 系统时钟同步到硬件时钟
-w, --systohc 硬件时钟同步到系统时钟
-u --utc 使用世界标准时间
--localtime 使用本地时间,注意:-u --utc或--localtime只有在设置硬件时钟时有效
例如,按照日、月、年、小时、分钟的格式来设置硬件时间可以写成:
hwclock --set --date "dd mmm yyyy HH:MM"
其中,dd为两位数表示的天(例如:05),mmm为用三位字符表示的月份(例如:DEC,代表12月)
hwclock可以用来做时间同步,分两种情况:第一种为同步系统时钟到硬件时钟,参见以下示例:
[root@linux ~]# hwclock --systohc
第二种为同步硬件时钟到系统时间,参见以下示例:
[root@linux ~]# hwclock --hctosys
关于hwclock更加详细的使用,可以参考man hwclock和info hwclcok的相关说明。