我使用过的Linux命令之hwclock - 查询和设置硬件时钟

我使用过的Linux命令之hwclock - 查询和设置硬件时钟

本文链接:http://codingstandards.iteye.com/blog/804830   (转载请注明出处)

 

用途说明

hwclock命令,与clock命令是同一个命令,主要用来查询和设置硬件时钟(query and set the hardware clock (RTC))。RTC=Real Time Clock,也就是硬件时钟。在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中 的时钟。所有Linux相关指令与函数都是读取系统时钟的设定。因为存在两种不同的时钟,那么它们之间就会存在差异。根据不同参数设置,hwclock命令既可以将硬件时钟同步到系统时钟,也可以将系统时钟同步到硬件时钟。

关于系统时钟与硬件时钟的关系的说法,网上分成了两种:

第一种:当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。

第二种:当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。

到底那一种才是正确的呢?执行一下man hwclock可以看到里面有一段:

man hwclock 写道
The System Time is the time that matters. The Hardware Clock’s basic purpose in a Linux system is to keep time
when Linux is not running. You initialize the System Time to the time from the Hardware Clock when Linux
starts up, and then never use the Hardware Clock again. Note that in DOS, for which ISA was designed, the
Hardware Clock is the only real time clock.

这段文字说明,第二种说法是正确的,第一种说法是错误的。但网上大部分文章都是第一种说法,所以说,网络虽好,要注意甄别。

man hwclock 写道
It is important that the System Time not have any discontinuities such as would happen if you used the date(1L)
program to set it while the system is running. You can, however, do whatever you want to the Hardware Clock
while the system is running, and the next time Linux starts up, it will do so with the adjusted time from the
Hardware Clock. 

如果使用date命令修改了系统时间,并不会自动去修改硬件时钟,因此,当系统下次重启时,系统时钟还会从硬件时钟去取,date设置的时间就无效了。这大概就是为什么需要hwclock命令的原因吧。

常用参数

  -r, --show         读取并打印硬件时钟(read hardware clock and print result )
  -s, --hctosys      将硬件时钟同步到系统时钟(set the system time from the hardware clock )
  -w, --systohc     将系统时钟同步到硬件时钟(set the hardware clock to the current system time )

使用示例

示例一 hwclock命令与clock命令是一个东西

[root@new55 ~]# type -a hwclock 
hwclock is /sbin/hwclock
hwclock is /usr/sbin/hwclock
[root@new55 ~]# ls -l /sbin/hwclock /usr/sbin/hwclock 
-rwxr-xr-x 1 root root 34096 2010-01-07 /sbin/hwclock
lrwxrwxrwx 1 root root    18 08-13 00:14 /usr/sbin/hwclock -> ../../sbin/hwclock

[root@new55 ~]# type -a clock 
clock is /sbin/clock
[root@new55 ~]# ls -l /sbin/clock 
lrwxrwxrwx 1 root root 7 08-13 00:14 /sbin/clock -> hwclock
[root@new55 ~]#

示例二 显示硬件时钟

[root@new55 ~]# hwclock 
2010年11月06日 星期六 21时09分28秒  -0.134840 seconds
[root@new55 ~]# hwclock -r 
2010年11月06日 星期六 21时09分33秒  -0.469123 seconds
[root@new55 ~]# hwclock --show 
2010年11月06日 星期六 21时09分45秒  -0.127548 seconds
[root@new55 ~]# 

 

示例三 修改日期并同步到硬件时钟

[root@new55 ~]# date 
2010年 11月 06日 星期六 21:11:57 CST
[root@new55 ~]# date 11062112     <== 格式 mmddHHMM,即 月日时分 
2010年 11月 06日 星期六 21:12:00 CST
[root@new55 ~]# hwclock -w 
[root@new55 ~]# hwclock 
2010年11月06日 星期六 21时12分13秒  -0.648818 seconds
[root@new55 ~]#

 

注:要使系统时间准确,最好还是使用ntp方式。

示例四 使用ntpdate命令从网络同步时间,再同步到硬件时钟

ntpdate命令是使用NTP协议来从网络同步时间的命令。NTP=Network Time Protocol 网络时间协议。

[root@new55 ~]# ntpdate 0.rhel.pool.ntp.org 
 6 Nov 21:17:55 ntpdate[4829]: step time server 123.146.124.28 offset -1.025258 sec
[root@new55 ~]# date 
2010年 11月 06日 星期六 21:17:59 CST
[root@new55 ~]# hwclock -w 
[root@new55 ~]#

问题思考

1. 为什么Linux要将时钟分为系统时钟和硬件时钟,这样做有什么好处?

相关资料

【1】91linux.com Linux hwclock 命令 其他资料对硬件时钟与系统时钟的关系的说法有问题,所以此处不列出。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二叉树的操作(前,中,后序遍历也叫深度优先遍历,非空结点的个数)递归实现

定义一个二叉树的结点 二叉树的前序遍历&#xff0c; 先访问根结点&#xff0c;再访问左&#xff0c;再访问右。 每次访问都要先看根结点是否为空&#xff0c;然后打印根结点&#xff0c;把此时根结点的左结点作为下一次递归的根结点&#xff0c;当把左结点遍历完后&#xff0…

makefile编译问题记录

1.-c选项和-C选项&#xff1a; -c&#xff08;gcc选项&#xff09;&#xff1a;编译.c或汇编源文件&#xff0c;但是不作连接. 编译器输出对应于源文件的目标文件. 如&#xff1a;$(CC) -c ${CFLAGS} ${SRCS} -C&#xff08;makefile选项&#xff09;&#xff1a;-C的是make…

二叉树的相关题(叶子结点个数,最大深度,找特殊值结点(值不重复),判断两个树是否相同,判断两个数是否为镜像树,是否为子树,)

叶子结点就是没有孩子结点&#xff0c;所以当当前根结点没有孩子结点的时候&#xff0c;就返回1&#xff0c;就是找到一个叶子结点&#xff0c;然后访问完每个不为空的结点就行&#xff0c;每次访问都是把当前结点的左/右结点作为新的结点&#xff0c;来判断。 求最大深度&…

为何线程有PID?

在linux下用 top -H -p <pid> 查询某个进程的线程 按理说&#xff0c;都是某个进程下的线程&#xff0c; 应该进程id PID一样啊&#xff0c;但实际却都不一样 实际是被PID的名字给弄混了&#xff0c;线程进程都会有自己的ID&#xff0c;这个ID就叫做PID&#xff0c;P…

关于树和二叉树的一些基本概念,基本名词解释。

二叉树的概念 概念 一棵二叉树是结点的一个有限集合&#xff0c;该集合或者为空&#xff0c;或者是由一个根节点加上两棵别称为左子树和右子树 的二叉树组成。 二叉树的特点&#xff1a; 每个结点最多有两棵子树&#xff0c;即二叉树不存在度大于2的结点。二叉树的子树有左右…

在VI中删除行尾的换行符

在vi中&#xff0c;如果要删除行尾的换行符&#xff0c;可以用如下方法 第一种情况&#xff1a;只删除单行 如有文件如下&#xff1a; [fanzfSWserver ~/tmp]$ cat names.tmp 101 Nate H. 102 John M. 104 Cassy T. 106 Mary L. 107 Isaac …

用c语言构建二叉树(重点)

结点创建 二叉树创建 我们以‘#’为NULL&#xff0c;我们要把输入进来的一个字符串转变为二叉树&#xff0c;所以我们要记住递归的每一步走到数组了哪个位置 所以我们要记住创建过程中用掉的前序个数&#xff0c;并返回&#xff0c;除此之外&#xff0c;还要加上当时的那个结点…

linux 同步IO: sync msync、fsync、fdatasync与 fflush

最近阅读leveldb源码&#xff0c;作为一个保证可靠性的kv数据库其数据与磁盘的交互可谓是极其关键&#xff0c;其中涉及到了不少内存和磁盘同步的操作和策略。为了加深理解&#xff0c;从网上整理了linux池畔同步IO相关的函数&#xff0c;这里做一个罗列和对比。大部分为copy&a…

二叉树的广度优先遍历(层序遍历)

先定义一个二叉树的结点 再创建二叉树&#xff0c;这里就不写了&#xff0c;之前的有创建二叉树的博客。 层序遍历 用到栈的思想&#xff0c; 1 先让根 节点进队列&#xff0c;2 然后读队顶元素&#xff0c;3 让他出队列4 打印它的值5 让队顶元素的左右子树进栈&#xff0…

用前序中序创建二叉树(用中序后序创建二叉树)

定义二叉树结点 比如就拿这个二叉树 前序中序创建 因为前序遍历的顺序是 根 &#xff0c; 左 &#xff0c;右。 中序的遍历是 左 根 右。 我们会很不好想&#xff0c;但我们可以用前序和中序把上面那个二叉树的遍历一边 前序遍历&#xff1a;ABDEHCFG中序遍历&#xff1a;D…

Epoll详解及源码分析

文章来源&#xff1a;http://blog.csdn.net/chen19870707/article/details/42525887 Author&#xff1a;Echo Chen&#xff08;陈斌&#xff09; Email&#xff1a;chenb19870707gmail.com Blog&#xff1a;Blog.csdn.net/chen19870707 Date&#xff1a;Jan.7th, 2015 1…

非递归实现二叉树(前序,中序,后序)c/c++实现

这里还是用到栈的思想&#xff0c;为了方便用了c的一些内容&#xff0c;把出栈&#xff0c;进栈&#xff0c;读栈顶元素用一个个函数封装起来了&#xff0c;前面做了一些处理来使用这些函数。 前序非递归 思想&#xff1a;一直走左边&#xff0c;依次进栈。等左边为空的时候&…

Linux 中统计一个进程的线程数

如果你想看到 Linux 中每个进程的线程数&#xff0c;有以下几种方法可以做到这一点。 方法一: /proc proc 伪文件系统&#xff0c;它驻留在 /proc 目录&#xff0c;这是最简单的方法来查看任何活动进程的线程数。 /proc 目录以可读文本文件形式输出&#xff0c;提供现有进程和系…

Linux_linux基础命令(增删查,权限,Linux下的重要目录,重要命令(. du, df, top, free, pstack, su, sudo).安装gcc/g++, gdb, vim )

r&#xff1a;表示可读w&#xff1a;表示可写x&#xff1a;表示可执行也可以用数字表示这一点我们会在修改文件权限说明。对于文件夹的rwx表示&#xff1a;r表示可读及可以查看文件夹内容可以ls查看w表示可写及可以向文件夹中传送内容如文件x表示可执行及可以向文件夹中可以cd进…

pthread_create会导致内存泄露

这几天一直在调试一个系统&#xff0c;系统的功能就是定时发送数据、接收数据然后解析收到的数据&#xff0c;转换成一定的格式存入数据库中。我为了并发操作&#xff0c;所以每接收到一个数据包&#xff0c;就调用pthread_create函数创建一个默认属性的线程进行处理。 系统…

Linux_linux常用工具之make/makefile详解

make/makefile make/makefile: 项目自动化构建工具 makefile:普通文本文件&#xff0c;记录了项目的构建流程规则。 make: 一个解释程序&#xff0c;到当前执行make命令的目录下寻找makefile文件&#xff0c;并且对makefile 中记录的项目构建规则进行解释执行。makefile: 编写…

Linux_linux常用工具(git,vim ,gcc ,gdb,权限)超详解

git :项目版本控制工具 项目克隆&#xff1a;git clone项目提交&#xff1a;git add&#xff08;本地仓库提交&#xff09; git commit -m “bak msg”&#xff08;-m 备注信息&#xff09;同步到服务器&#xff1a;git push origin master&#xff08;提交到主分支&…

T20调试札记

最近在调试T20的内存&#xff0c;使用的指令在此记录一下 1. pmap指令查看指定进程中的内存分布。该指令需要在busybox中开启 pmap -x 111 2.应用与so需要执行strip操作&#xff0c;可以减小存储空间的大小 mips-linux-gnu-strip libsysutils.so 3.nm指令和file指令可以查…

samba 2.2.7a 编译

今天在君正T20上编译samba 2.2.7a 遇到了一些问题&#xff0c;特此记录一下 1.自己写一个build.sh脚本&#xff0c;方便后续的再次编译 #!/bin/sh # export CFLAGS"-O2 -muclibc" export CPPFLAGS"-O2 -muclibc" export CXXFLAGS"-O2 -muclibc&qu…

Linux_linux常用工具------进度条程序

缓冲区对文件读写的影响&#xff1a;数据并没有直接写入文件&#xff0c;而是写入到缓冲区&#xff08;内存&#xff09;中&#xff0c;等到缓冲区中数据写满或者刷新缓冲区的时候&#xff0c;才会将数据真正的写入文件 fflush&#xff08;stdout&#xff09;刷新。 回车与换行…