linux上修改时间

来源:互联网 发布:中国茶叶出口数据2017 编辑:程序博客网 时间:2024/04/24 11:44

由于最近需要用motion来将进行视频监控,将移动的物体拍下来并实现将图片保存在开发板上,保存的格式为“年-月-日 时:分:秒”,但是发现系统的时间不对,后来了解后才知道linux系统分为系统时钟和硬件时钟,接下来是叫我们如何将时间修改为我们当前的时间,例如现在是2016年4月30日 16:52。

—————————————————————————————————————————————————————————


首先我们先了解一下硬件时钟和系统时钟的概念:

硬件时钟是存储在CMOS里的时钟,关机后该时钟依然运行,主板的电池为它供电。

系统时钟则是我们当前显示的时间。

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

—————————————————————————————————————————————————————————

~ >: date
Sun Jan  2 12:15:46 MST 2000

~ >: hwclock
Sun Jan  2 19:19:22 2000  0.000000 seconds

date是用来显示系统时钟的,hwclock是用来显示硬件时钟的,这里可以发现明明现在是2016-4-30可是系统时钟还是2000-1-20

和硬件时钟一样,这个明显不是我们想要的。所以我们需要去改变它。

这里需要重点说一下hwclock这个命令;

===================================================================================================================

hwclock命令既可以将硬件时钟同步到系统时钟,也可以将系统时钟同步到硬件时钟

hwclock  -s, --hctosys      将硬件时钟同步到系统时钟(set the system time from the hardware clock )
hwclock  -w, --systohc     将系统时钟同步到硬件时钟(set the hardware clock to the current system time )

===================================================================================================================

修改思路:

既然系统时钟一上电是去读的硬件时钟,那么我们就只需要将硬件时钟改成我们需要的即可。

首先我们在开发板上修改一下系统时钟,应该先用date 043017372016.38  设置成2016年4月30日17点37分38秒,然后将硬件时钟改变。

hwclock -w 

~ >: hwclock
Sat Apr 30 17:37:38 2016  0.000000 seconds
~ >: date
Sat Apr 30 17:37:46 MDT 2016

******************************************************************************************************************

不过我们重启之后发现了这个问题

~ >: date
Sat Apr 30 11:38:53 MDT 2016
~ >: date --utc
Sat Apr 30 17:38:56 UTC 2016
~ >: hwclock
Sat Apr 30 17:38:59 2016  0.000000 seconds
~ >: hwclock --utc
Sat Apr 30 11:38:17 2016  0.000000 seconds

*******************************************************************************************************************

这里就涉及到了utc时间和本地时间,有兴趣的同学可以去百度一下。

从上面的结果看来,上电重启之后系统时间是读取的硬件时间的utc时间去了,并不是我们想要的本地时间,而我保存图片是需要本地时间。

所以这里需要执行一下脚本,使上电之后系统时间去读取硬件时间的本地时间。

/etc/init.d 中创建脚本S1_clock

#!/bin/sh

hwclock -s


然后我们再上电重启

~ >: date
Sat Apr 30 17:45:54 MDT 2016
~ >: hwclock
Sat Apr 30 17:45:58 2016  0.000000 seconds

OK了!


2016/6/2更新 Mark一下

参考这个博客将时间同步进行到底,因为我开发板过过几天时间又变了~下面这个帖子可以完全解决!

http://my.oschina.net/myaniu/blog/182959





0 0