RHEL7、CentOS7提供三种命令行方式方式来设置和显示日期、时间。
timedatectl是在RHEL7及CentOS7中新增的systemd的一部分,date是传统的日期时间设置命令,hwclock单元访问的是硬件时钟。
一、date命令的时间显示和设置
# date --help
我们通过date+format来控制显示信息。
# date
# date -u
# date "+%Y-%m-%d %H:%M:%S"
# date
# date -d today
# date -s "2019-04-05 09:29:40"
二、关于hwclock
hwclock,硬件时钟,顾名思义,这个时间时存储在服务器主板上的时钟。
硬件时钟存储的值包括:年、月、日、时、分、秒。不存储时间标准、本地时间、UTC、DST。这些设置存放在/etc/adjtime中,当我们修改时间设置(包括手动设置和自动同步)时该文件被创建。
在RHEL6或CentOS6系统中,系统每次关机或重启都会自动执行这个命令。
在RHEL7或CentOS7中,当系统时间向NTP服务器或PTP服务器同步时间后,每隔11分钟内核自动同步硬件时钟到系统时钟。
# hwclock --help
一般,我们设置完系统时间后,需要执行 hwclock -w 使硬件时间和当前设置的系统时间同步,否则重启,当前时间设置会失效!
# date -s "2019-04-05 09:29:40"
# hwclock -w
三、关于timdatectl
# timdatectl --help
# timedatectl
# timedatectl | grep -i "Time zone" |head -1| awk '{print $3}'
# timedatectl set-ntp 1|yes|true
# timedatectl set-ntp 0|no|false
如果服务器的ntpClient要跟ntpServer 用ntpdate进行第一次快速同步时,需先设置 timedatectl set-ntp no 和关闭客户端ntpd服务,待ntpdate同步完成,再开启。
# timedatectl set-local-rtc 1|yes|true
# timedatectl set-local-rtc 0|no|false
一般,不建议设置 timedatectl set-local-rtc yes
# ls /usr/share/zoneinfo/
# ls /usr/share/zoneinfo/Asia/
可以看到,在Linux时区设置上,是没有 Asia/Beijing的,有的是 Asia/Chongqing Asia/Shanghai Asia/Taipei,如果不用UTC时间,我们一般使用 Asia/Shanghai
# timedatectl set-timezone Asia/shanghai
实际上是做了如下操作:
# In -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# timedatectl set-time "2019-02-26"
# timedatectl set-time "10:48:30"
# timedatectl set-time "2019-02-26 10:48:30"
# hwclock -w
四、参考
timedatectl 中文手册
http://www.jinbuguo.com/systemd/timedatectl.html
如何设置时间,时区和同步系统时钟使用timedatectl命令
http://linux.51yip.com/search/timedatectl
https://www.howtoing.com/set-time-timezone-and-synchronize-time-using-timedatectl-command
https://www.tecmint.com/set-time-timezone-and-synchronize-time-using-timedatectl-command