linux用date更改时间还原

这几天发现公司服务器上的时间比现实时间快了一天,可能导致一些不可逆转问题,比如网站积分会受影响,日志问题。用date修改下结果出现了立刻还原的故障问题,想写入硬件时间,但是hwclock –rw命令又有问题,具体操作如下:

[[email protected] ~]# date

Tue Sep  8 19:39:49 HKT 2015

[[email protected] ~]# date  090811392015

Tue Sep  8 11:39:00 HKT 2015

[[email protected] ~]# date

Tue Sep  8 19:41:20 HKT 2015

[[email protected] ~]# hwclock

Cannot access the Hardware Clock via any known method.

Use the --debug option to see the details of our search for an access method.

[[email protected] ~]# hwclock -rw

You have specified multiple functions.

You can only perform one function at a time.

[[email protected] ~]# hwclock --debug

hwclock from util-linux-2.13-pre7

hwclock: Open of /dev/rtc failed, errno=19: No such device.

No usable clock interface found.

Cannot access the Hardware Clock via any known method.

[[email protected] ~]# vim /etc/syscyl.conf

xen.independent_wallclock=1

[[email protected] ~]# hwclock -w --debug

hwclock from util-linux-2.13-pre7

hwclock: Open of /dev/rtc failed, errno=19: No such device.

No usable clock interface found.

Cannot access the Hardware Clock via any known method.

等一系列操作还是没效果,更改不了硬件时间,写入bois。查看系统版本信息

[[email protected] ~]# uname -a

Linux bogon 2.6.18-194.el5xen #1 SMP Tue Mar 16 22:01:26 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

[[email protected] ~]# cat /proc/version

Linux version 2.6.18-194.el5xen ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Tue Mar 16 22:01:26 EDT 2010

【参考解决方案】

CentOS在安装完新内核之后,每次重启之后时钟总是会发生一些变化,使得系统时钟不准确。在多操作系统的情况下(例如windows和 linux双系统),还可能会出现时区的偏差,而且无论如何设置,在重启之后都会恢复原样。

计算机设计者在主板上设置了一个硬件时钟,由主板上的一块纽扣电池(Cell)供电,这个硬件时钟无论计算机电源是否接通都会不停的数秒,来计算当前时间。操作系统在启动的时候,会调用一段程序来读取主板上的硬件时钟,并记录在操作系统的一个(或一组)变量中。自此之后,操作系统的时钟便脱离主板的硬件时钟,开始单独运行(操作系统时钟的运行是由时钟中断来驱动的,不同于主板上的时钟)。

无论做工多么精细,主板硬件时钟和由时钟中断维护的操作系统内的时钟多多少少会有一些误差。所以,操作系统在每次关闭的时候会调用另一段程序,将操作系统 内的时钟写到主板硬件时钟里(这样设计是不是说明时钟中断比主板硬件时钟更准确一些呢?)。类似的,当用户在操作系统内修改时钟之后,也不会立即写入主板 时钟,而是在关机的时候写入硬件时钟。

主板上的硬件时钟在Linux操作系统中呈现为一个设备,设备名称为rtc(Real Time Clock)。

使用旧的系统(如CentOS的2.6.18内核)编译新内核时,在调用mkinitrd命令时,会将/dev/rtc生成好,放到initrd- x.x.x.img文件中;而新的内核是自己生成/dev/rtc文件的,当kernel生成/dev/rtc时,发现系统内已经有了这个设备,于是就会 创建/dev/rtc0设备。这时hwclock程序仍然会读取rtc设备,就会造成设备读写失败。运行hwclock –debug命令可以看到如下输出:

[[email protected] ~]# hwclock --debug hwclock from util-linux-2.13-pre7 hwclock: Open of /dev/rtc failed, errno=19: No such device. No usable clock interface found. Cannot access the Hardware Clock via any known method.

其实,对应这个问题,新版的hwclock已经做出了调整。新的hwclock会主动去寻找/dev/rtc0设备,来操作主板硬件时钟。于是,解决方法就出现了。

就把外围应用程序hwclock也换成新的。下载完成之后,编译该程序:

1 2 3 4 tar xfv util-linux-ng-2.17.tar.bz2 cd util-linux-ng-2.17 ./configure make

编译完成之后,将生成的hwclock文件拷贝到指定位置即可:

1 cp hwclock/hwclock /sbin/

之后,操作系统和主板的硬件时钟就可以同步起来了。

时间: 2024-10-22 04:30:07

linux用date更改时间还原的相关文章

Linux shell date 按照时间片段进行循环

记得曾经写脚本按照天为单位进行循环,循环的其实日期可以是任何一天,像这样: 1 START_DAY=$(date -d "$TODAY -1days" +%Y%m%d); 2 3 END_DAY=$(date -d "$TODAY -${cycle}days" +%Y%m%d); 4 5 for((;$END_DAY<=$START_DAY; END_DAY=$(date -d "$END_DAY +1days" +%Y%m%d))) 6

linux中date显示时间和日期与hwclock时间同步

1.date显示系统时间,日期 date +"%Y-%m-%d %H:%M:%S" 2015-07-02 14:32:15 date %Y 四位格式打印年份 date %y 二位格式打印年份 date %m 月 date %d 日 date %H 小时 date %M 分钟 data %S 秒 2.使用前一天时间 date -d "-1 day" +%d 使用前一小时 date -d "-1 hour" +%H 使用前一分钟 date -d &q

linux在shell date获取时间的相关操作

获得当天的日期 date +%Y-%m-%d 输出: 2011-07-28 将当前日期赋值给DATE变量DATE=$(date +%Y%m%d) 有时候我们需要使用今天之前或者往后的日期,这时可以使用date的 -d参数 获取明天的日期 date -d next-day +%Y%m%d 获取昨天的日期 date -d last-day +%Y%m%d 获取上个月的年和月 date -d last-month +%Y%m 获取下个月的年和月date -d next-month +%Y%m 获取明年

python练习-(秒转时分秒,时分秒转秒)-对比linux中文件的上次更改时间跟当前时间相差多久。

具体代码如下> import paramiko,re,datetime,time ssh=paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允许连接不在hosts文件中的主机 ssh.connect(hostname="10.124.198.75",port=8122,username="admin",password='De@2019eR') std

php 中date显示时间不对与Linux文件乱码问题

php 中date显示时间不对解决办法如下1.修改/etc/php.ini文件 在里头中找到data.timezone =去掉它前面的分号';' 然后设置data.timezone = "Asia/Shanghai";即可 2.在程序代码中使用函数date_default_timezone_set('Asia/Shanghai'); 或者date_default_timezone_set('PRC'); 即可 LINUX 系统显示中文文件乱码 解决办法如下 1.永久解决 输入local

linux shell date 用当天时间做备份文件名

#!/bin/bash #date  显示时间,我们可以用时间的不同做为备份文件的名字,这样以前的备份就不会被覆盖 datename=$(date +%Y%m%d-%H%M%S)             #定义时间变量名和显示时间格式 mkdir /tmp/back/$datename                   #创建与时间相对应的文件 cp -a -R  /tmp/datea /tmp/back/$datename/   #把要备份的文件复制到上面创建的文件夹内 原文地址:https

Qt linux下设置系统时间

想要能修改 ARM板上的系统时间,试了两种方法: 1.采用系统命令.system() 尝试了很多命令,date -s "20090807 16:02:23" :date -s 16:02:23 :但板子上的日期就是设置不成功,采用date -s 16:02:23 可以将时间设置成功.于是不得不考虑别的方法. 2.标准C库 首先感叹下,C库很强大呀! 而且我觉着C库的移植行很好.相比较采用system()命令,可能由于linux 版本的不同,好多命令可能存在差异,比如redhat 和ub

linux命令--date命令&cal命令

date命令是用来显示时间的,cal命令是用来显示日历的. 其中date命令的一些常用格式有 %H 小时(以00-23来表示).  %I 小时(以01-12来表示).  %K 小时(以0-23来表示).  %l 小时(以0-12来表示).  %M 分钟(以00-59来表示).  %P AM或PM.  %r 时间(含时分秒,小时以12小时AM/PM来表示).  %s 总秒数.起算时间为1970-01-01 00:00:00 UTC.  %S 秒(以本地的惯用法来表示).  %T 时间(含时分秒,小

Linux查看系统开机时间

Linux查看系统开机时间 有时候需要查看Linux系统运行了多久时间,此时需要知道上次开机启动时间: 有时候由于断电或供电故障突然停机,需要查看Linux开机时间/重启时间:  下面总结一些查看Linux开机关机时间的方法(非常全面) 1: who 命令查看 who -b 查看最后一次系统启动的时间. who -r 查看当前系统运行时间 [[email protected] ~]# who -b system boot May 11 09:27 2: last  reboot 如下所示last