Centos7 修改硬件时间和系统时间

来源:互联网 发布:数据库系统的主要特点 编辑:程序博客网 时间:2024/04/27 19:57

在新的centos7里,关于时间的指令除了保留了之前版本中常用到的date、hwclock等命令外,还增加了一个统一的命令timedatactl。下面结合其用法进行下小结。

查看 timedatectl 指令用法帮助

  1. [root@361way ~]# timedatectl --help
  2. timedatectl [OPTIONS...] COMMAND ...
  3. Query or change system time and date settings.
  4. -h --help Show this help
  5. --version Show package version
  6. --adjust-system-clock
  7. Adjust system clock when changing local RTC mode
  8. --no-pager Do not pipe output into a pager
  9. -P --privileged Acquire privileges before execution
  10. --no-ask-password Do not prompt for password
  11. -H --host=[USER@]HOST Operate on remote host
  12. Commands:
  13. status Show current time settings
  14. set-time TIME Set system time
  15. set-timezone ZONE Set system timezone
  16. list-timezones Show known timezones
  17. set-local-rtc BOOL Control whether RTC is in local time
  18. set-ntp BOOL Control whether NTP is enabled

更详细的帮助信息也可以通过man timedatectl 进行查看。

查看当前设置,直接输入timedatectl等同于timedatectl status 

  1. [root@361way ~]# timedatectl
  2. Local time: Wed 2014-09-24 21:19:26 CST
  3. Universal time: Wed 2014-09-24 13:19:26 UTC
  4. RTC time: Wed 2014-09-24 13:19:26
  5. Timezone: Asia/Shanghai (CST, +0800)
  6. NTP enabled: yes
  7. NTP synchronized: yes
  8. RTC in local TZ: no
  9. DST active: n/a

设置日期

  1. timedatectl set-time YYYY-MM-DD

设置当前时间

  1. timedatectl set-time HH:MM:SS

默认的,系统是使用UTC时间的,可以用以下命令打开和关闭UTC时间

  1. timedatectl set-local-rtc boolean

把 boolean 替换成yes则表示使用本地时间,替换成no则表示是UTC时间

注:这里的boolean值也可以用true、flase

设置时区

查看所有的时区:

  1. timedatectl list-timezones

用以下命令设置时区:

  1. timedatectl set-timezone time_zone

远程NTP服务器同步

timedatectl还可以设置是否打开NTP选项

  1. timedatectl set-ntp boolean

这里的boolean是yes或者no

除了以上用法,timedatectl 还支持通过-H参数进行远程主机的时间设置。


一、废哔哔

声明下,我是个java程序员。昨天找运维要来台服务器部署服务,然后在这台服务器上使用 date 命令,可以确定是东八区,然后查看时区,也确定是东八区上海时间。但是log4f的时间是和系统的时间不对应。然后在程序里输出了new Date(),显示的时间和log4j一致,但是和系统时间不一致,这就导致订单时间不对应,对比时间的时会出现误差,许多订单显示超时,实际没有超时。当时排查过问题,可以很明确的排除时区,jvm,tomcat的问题,当时一位老同志就让我看看是否是系统时间和硬件时间不一致,一查看还真是,log4j和new Date()取得是硬件时间

二、解决过程

要是用root哦

  • 查看系统时间
[root@localhost ~]# dateTue Jun 13 10:20:13 CST 2017
  • 1
  • 2

  • 查看硬件时间
[root@localhost ~]# hwclock --showTue 13 Jun 2017 02:11:12 AM CST  -0.848845 seconds
  • 1
  • 2

可以看出系统时间比硬件时间快,系统时间是准确的


假如系统时间和硬件时间都不准确

  • 更新系统年月日
[root@localhost ~]# timedatectl set-time 2017-06-13
  • 1

  • 更新系统时分秒
[root@localhost ~]# timedatectl set-time 10:25:17
  • 1

  • 更新时区(亚洲-中国-上海)
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai
  • 1

  • 将硬件时钟调整为与系统时钟一致
[root@localhost ~]# timedatectl set-local-rtc 1或者[root@localhost ~]# hwclock --systohc --localtime 
  • 1
  • 2
  • 3

  • 将日期写入CMOS
[root@localhost ~]# clock –w
  • 1

再次查看系统时间和硬件时间,他们就一致了



原创粉丝点击