由 Linux 内核管理的时钟与硬件时钟并不相同。硬件时钟又叫 BIOS 时钟,在系统关闭后仍在运行,可以通过修改 BIOS 修改硬件时钟。不过当系统已经启动之后,仍可通过 hwclock 命令查看并修改硬件时间。

1.显示系统日期和时刻

输入 hwclock 即可查看硬件时钟,默认选项是 -r 或者 --show。

# hwclock

Fri 16 Aug 2013 04:45:28 PM CST -0.428900 seconds

# hwclock -r

Fri 16 Aug 2013 04:45:35 PM CST -0.063468 seconds

# hwclock --show

Fri 16 Aug 2013 04:45:42 PM CST -0.719671 seconds

hwclock 得到的时间和 date 命令得到的时间可能相同,也可能不同,因为来源不同。

# date

Fri Aug 16 16:47:30 CST 2013

在本人的机器上,有大约两分钟的差别,内核时钟与北京时间吻合,硬件时钟略微有点慢。

2.将系统时间复制到硬件时间

当然,系统时间和硬件时间相等是满足强迫症患者的必要条件。而它们的差别的确是存在的。

我们需要的选项是 --systohc

# hwclock --systohc

# hwclock

Fri 16 Aug 2013 04:54:23 PM CST -0.438495 seconds

# date

Fri Aug 16 16:54:24 CST 2013

我们看到,差别已经消失了,相应的短选项是 -w,不过这个非常难记,长选项意思很明确:SYStem TO Hardware Clock,非常容易记忆。

3.手动调节硬件时钟

手动调节主要使用 --set 命令和 --date 选项。

# hwclock --set --debug --date 8/16/2013

Issuing date command: date --date="8/16/2013" +seconds-into-epoch=%s

response from date command = seconds-into-epoch=1376582400

date string 8/16/2013 equates to 1376582400 seconds since 1969.

hwclock from util-linux 2.20.1

Using /dev interface to clock.

Last drift adjustment done at 1376643258 seconds after 1969

Last calibration done at 1376643258 seconds after 1969

Hardware clock is on UTC time

Assuming hardware clock is kept in UTC time.

Waiting for clock tick...

...got clock tick

Time read from Hardware Clock: 2013/08/16 10:20:49

Hw clock time : 2013/08/16 10:20:49 = 1376648449 seconds since 1969

Time elapsed since reference time has been 0.318806 seconds.

Delaying further to reach the new time.

Setting Hardware Clock to 16:00:00 = 1376582400 seconds since 1969

ioctl(RTC_SET_TIME) was successful.

Not adjusting drift factor because it has been less than a day since the last calibration.这里用到了 --debug 选项,后面详细说。

hwclock 命令的 --date 选项还与 date 命令输出格式兼容。

# hwclock --debug --set --date "`date`"

Issuing date command: date --date="Fri Aug 16 18:24:44 CST 2013" +seconds-into-epoch=%s

response from date command = seconds-into-epoch=1376648684

date string Fri Aug 16 18:24:44 CST 2013 equates to 1376648684 seconds since 1969.

hwclock from util-linux 2.20.1

Using /dev interface to clock.

Last drift adjustment done at 1376648658 seconds after 1969

Last calibration done at 1376648658 seconds after 1969

Hardware clock is on UTC time

Assuming hardware clock is kept in UTC time.

Waiting for clock tick...

...got clock tick

Time read from Hardware Clock: 2013/08/16 10:24:44

Hw clock time : 2013/08/16 10:24:44 = 1376648684 seconds since 1969

Time elapsed since reference time has been 0.428459 seconds.

Delaying further to reach the new time.

Setting Hardware Clock to 10:24:44 = 1376648684 seconds since 1969

ioctl(RTC_SET_TIME) was successful.

Not adjusting drift factor because it has been less than a day since the last calibration.上面的命令相当于 --systohc 选项。

还有一种格式为:

# hwclock --set --date "8/11/2013 23:10:45"

注意,这种方式调整时间后默认为本地时间(local time)而不是 UST。

4.将硬件时钟复制到系统时钟

基本命令和上面相似,长选项是 --hctosys,相应的短选项是 -s。

5.回过头来说说调试模式

如果加上 --debug 选项,程序将输出一些调试信息,这些调试信息表明了程序究竟做了什么。例子见上面的 shell 输出,更多的例子在下面两节。

6.调节硬件时钟

系统启动的时候会读取硬件时钟,/etc/adjtime 文件被 hwclock 的 --adjust 选项调用以控制调节过程,先看看该文件:

# cat /etc/adjtime

0.380822 1376648684 0.000000

1376648684

UTC第一行有三个数字,分别为:系统漂移率(时钟每天产生的偏差),从最近一次调整算起回溯到 1969 UTC 的总秒数,一个零(没有物理意义);第二行是第一行的第二个数字;第三行是 UTC 或者是 local。

# hwclock --debug --adjust

hwclock from util-linux 2.20.1

Using /dev interface to clock.

Last drift adjustment done at 1376648684 seconds after 1969

Last calibration done at 1376648684 seconds after 1969

Hardware clock is on UTC time

Assuming hardware clock is kept in UTC time.

Waiting for clock tick...

...got clock tick

Time read from Hardware Clock: 2013/08/16 10:44:58

Hw clock time : 2013/08/16 10:44:58 = 1376649898 seconds since 1969

Time since last adjustment is 1214 seconds

Need to insert 0 seconds and refer time back 0.005351 seconds ago

Needed adjustment is less than one second, so not setting clock.上面是一个典型的例子,仔细读一下后,--adjust 选项的作用还是很明显的。

7.测试模式

由于操作系统时间是个比较敏感的问题,搞乱了内核时钟或是硬件时钟都会惹来麻烦,所以 hwclock 增加了 --test 选项。

# hwclock --systz --test

Not setting system clock because running in test mode.也就是说程序执行了,但是没有真正改动任何数据,所以总要加上 --debug 选项来输出程序的行为。

# hwclock --debug --test --systz

hwclock from util-linux 2.20.1

Last drift adjustment done at 1376648684 seconds after 1969

Last calibration done at 1376648684 seconds after 1969

Hardware clock is on UTC time

Assuming hardware clock is kept in UTC time.

Current system time: 1376650362 = 2013/08/16 10:52:42

Calling settimeofday:

UTC: 2013/08/16 10:52:42

tv.tv_sec = 1376650362, tv.tv_usec = 932224

tz.tz_minuteswest = -480

Not setting system clock because running in test mode.从上面的输出可以看出 --systz 选项自动调节系统时区,有时候看 man page 看的云里雾里的时候可以用 --test 做个实验,一切就简单了。

hwclock 还有很多功能和参数,上面几个是主要的,其他的可以用 --test 玩一下就可以明白其功用。

英文原文: http://www.thegeekstuff.com/2013/08/hwclock-examples/?utm_source=feedburner&utm_medium=email&utm_campaign=Feed%3A+TheGeekStuff+%28The+Geek+Stuff%29

修改linux硬时钟,Linux 下用 hwclock 调节系统时钟相关推荐

  1. linux系统运行hwclock报错,linux系统时间和硬件时钟问题(date和hwclock)

    总结一下hwclock,这个容易晕: 1)/etc/sysconfig/clock 文件,只对 hwclock 命令有效,且只在系统启动和关闭的时候才有用(修改了其中的 UTC=true 到 UTC= ...

  2. linux pcf8563开发文档,linux下的i2c与时钟芯片pcf8563通信

    2012/7/19 linux下的i2c与时钟芯片pcf8563通信 by: 韩大卫 @吉林师范大学 1,本程序增加了对星期寄存器(wday)的写操作. 2, 本程序将i2c-test 改为rtdat ...

  3. linux将时钟放在桌面上的,Linux 下的桌面指针时钟

    Linux 下的桌面指针时钟 一.开发背景 随着科学技术的日益增加,软件行业在有了新的突破.特别是在移动设备上更有着远大的开发空间,目前,移动设备上,包括手机,笔记本,平板,发展的特别快,界面也越来越 ...

  4. linux下已修改但尚未保存_Linux下历史命令保存、默认值修改的问题

    linux下怎样修改history最大保留数呢? 直接修改配置参数命令为:vi /etc/profile 修改其中"HISTSIZE=1000"参数值即可.如下图: linux历史 ...

  5. Windows 修改键盘映射(附带Linux下Ubuntu的修改方法)

    Windows 修改键盘映射(附带Linux下Ubuntu的修改方法) 一.简述        通过修改键盘映射关系可以改变按键的功能.如:       1) A键损坏,使用B键代替.       2 ...

  6. linux中etc目录下没有source,Linux /etc/profile文件详解及修改后如何立即生效(使用source命令)...

    Linux /etc/profile文件的改变会涉及到系统的环境,也就是有关Linux环境变量的东西,学习Linux要了解Linux profile文件的相关原理,这里对则以文件进行具体分析.这里修改 ...

  7. linux内核编译后 make: 警告:检测到时钟错误.,系统时钟 make: 警告:检测到时钟错误。您的创建可能是不完整的。...

    修改Linux的时间 修改Linux时间一般涉及到3个命令: date, clock, hwclock date: 修改系统当前的时间: [root]#date –s '2005/12/5 10:01 ...

  8. linux修改硬件系统时间,Linux修改日期、时间,系统与硬件时间

    Linux的时间分为两种,硬件时间和系统时间两种: 一.查看与修改系统时间 查看系统时间:date # date Fri Nov 26 15:20:18 CST 1999 用指定的格式显示系统时间:  ...

  9. linux 硬链接和软链接

    在学习linux的过程中,我经常把软硬链接,所以今天专门查了一些资料,然后整合在自己的博客中,方便以后复习,查看. 一方面也是因为看了vamei的linux的概念与体系系列文章,感觉不全的做些补充. ...

最新文章

  1. javaScript的运算符和if。。else语句
  2. Python学习之——编码方式
  3. delphi xe2学习笔记(1)
  4. php读取zip文件,php如何读取zip内容?(zip_entry_read函数的使用)
  5. java 防止反射_Java设计模式(一):单例模式,防止反射和反序列化漏洞
  6. Command 传参的几种方式
  7. 计算机网络怎么寻址_计算机网络中的无类寻址
  8. 一汽奔腾b7o价位_全新第三代奔腾B70有何资格对合资品牌降维打击?
  9. MyBatis-Plus: 谨慎入坑
  10. 原始尺寸_三维扫描检测,铸件三维全尺寸检测,铸件三维扫描服务
  11. linux使用running网卡ping,Linux CentOS 7 IP地址配置及网络问题排查
  12. 文献学习笔记丨转录组表达数据的生信挖掘研究
  13. 1.1.1.1校园网_突破校园网限制,开启寝室Wifi
  14. 全面掌握Java多线程
  15. MPC-BE 1.6.0.6370 Beta 经典多媒体播放器
  16. Python零基础学习笔记(三十三)—— 窗体的控制
  17. Elasticsearch聚合学习之二:区间聚合
  18. 轻松又酷炫地实现弹幕效果——手把手教学
  19. 亚马逊——不一样的电商公司
  20. python全局变量和局部变量可以同名吗_Python global

热门文章

  1. 兼容ie8的rem.js在ie下没有用
  2. Java从入门到精通笔记20230106--百钱百鸡引出的疑问
  3. 理解DSCP PHB AF DF
  4. iOS 使用UITextField隐藏键盘
  5. Linux黑客基础02篇(部署镜像及有关命令的操作)
  6. 程序员必读的189本书
  7. caffe训练验证码识别
  8. 飞速流量压缩仪app v2.2.0官方iphone版
  9. 基于云计算的呼叫中心解决方案的16个优势
  10. 1688关键字搜索部分示例