导言
上文,我们讲述了cd命令,本文讲述hwclock命令。该命令用来查询或设置硬件时钟。
你可以通过BIOS修改系统硬件时钟,或者如果你不想重起机器,那就用hwclock命令。(需求的来源)
clock命令其实也是hwclock命令
hwclock命令
作用
查询或设置硬件时钟(RTC)
描述
hwclock命令是一个硬件时钟访问工具,它可以显示当前时间、设置硬件时钟的时间和设置硬件时钟为系统时间,也可设置系统时间为硬件时钟的时间。
在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。
既然Linux有两个时钟系统,那么大家所使用的Linux默认使用哪种时钟系统呢?会不回出现两种系统时钟冲突的情况呢?这些疑问和担心不无道理。首先,Linux并没有默认哪个时钟系统。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。
从Linux启动过程来看,系统时钟和硬件时钟不会发生冲突,但Linux中的所有命令(包括函数)都是采用的系统时钟设置。不仅如此,系统时钟和硬件时钟还可以采用异步方式,即系统时间和硬件时间可以不同。这样做的好处对于普通用户意义不大,但对于Linux网络管理员却有很大的用处。例如,要将一个很大的网络中(跨越若干时区)的服务器同步,假如位于美国纽约的Linux服务器和北京的Linux服务器,其中一台服务器无须改变硬件时钟而只需临时设置一个系统时间,如要将北京服务器上的时间设置为纽约时间,两台服务器完成文件的同步后,再与原来的时钟同步一下即可。这样系统和硬件时钟就提供了更为灵活的操作。
在Linux中,用于时钟查看和设置的命令主要有date、hwclock和clock。其中,clock和hwclock用法相近,只不过clock命 令除了支持x86硬件体系外,还支持Alpha硬件体系。由于目前绝大多数用户使用x86硬件体系,所以可以视这两个命令为一个命令来学习。
注意
当你使用hwclock命令调整硬件时间很多次以后,hwclock就会获取你的时钟推移速率,然后就会把这个信息存在/etc/adjtime里边。
用法
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 | 调试模式 |
常用选项
-r选项(show)
该命令用于读取硬件时钟并打印结果
[root@pro_master ~]# hwclock --show
Mon 19 Sep 2016 09:02:15 PM CST -0.168728 seconds
[root@pro_master ~]# hwclock -r
Mon 19 Sep 2016 09:02:23 PM CST -0.809535 seconds
[root@pro_master ~]# hwclock
Mon 19 Sep 2016 09:02:35 PM CST -0.943869 seconds
-w选项
从当前系统时间设置硬件时钟
实践 - 验证clock和hwclock是一个命令
[tqw@localhost c]$ type hwclock
hwclock 已被哈希 (/usr/sbin/hwclock)
[tqw@localhost c]$ ls -l /usr/sbin/hwclock
-rwxr-xr-x. 1 root root 45304 8月 21 2015 /usr/sbin/hwclock
[tqw@localhost c]$ type -a hwclock
hwclock 是 /usr/sbin/hwclock
hwclock 是 /sbin/hwclock
[tqw@localhost c]$ type -a clock
clock 是 /usr/sbin/clock
clock 是 /sbin/clock
[tqw@localhost c]$ ls /usr/sbin/clock
/usr/sbin/clock
[tqw@localhost c]$ ls -l /usr/sbin/clock
lrwxrwxrwx. 1 root root 7 8月 7 08:31 /usr/sbin/clock -> hwclock
[tqw@localhost c]$ ls -l /sbin/clock
lrwxrwxrwx. 1 root root 7 8月 7 08:31 /sbin/clock -> hwclock
clock是指向hwclock命令的链接,指向clock实际上是指向hwclock。
实践二-查看采用的时区和时间格式
查看locale.conf文件,确认是否设置了UTC和时区:
[tqw@localhost etc]$ cat locale.conf
LANG="zh_CN.UTF-8"
总结
本次的命令是hwclock,注意,该命令需要root权限下进行。系统时间的查看是用date命令,关于该命令,将于下一次文章讲述。