扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1 TIMEDATECTL命令
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了平潭免费建站欢迎大家使用!
该命令是作为systemd系统和服务管理器的一部分分发的工具,可以用它来查看和更改系统时钟的配置,包括更改当前的日期和时间、设置时区以及可以激活与远端服务器系统时钟的自动同步,是红帽企业版 7 版本新增的命令。
1.1 展示当前日期和时间
可以使用timedatectl命令来展示当前日期和时间,并且有系统和硬件时钟的配置的详细信息。
[root@strong ~]# timedatectl
Local time: Sat 2019-09-21 15:02:27 CST
Universal time: Sat 2019-09-21 07:02:27 UTC
RTC time: Sat 2019-09-21 07:02:27
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
1.2 更改当前时间
更改当前时间,命令格式为:timedatectl set-time HH:MI:SS。
该命令同时更改系统时间和硬件时钟,执行结果与使用命令date --set 和hwclock --systohc的效果相同。
[root@strong ~]# timedatectl set-time 20:00:00
[root@strong ~]# timedatectl
Local time: Sat 2019-09-21 20:00:04 CST
Universal time: Sat 2019-09-21 12:00:04 UTC
RTC time: Sat 2019-09-21 12:00:05
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
[root@strong ~]# timedatectl set-time 2019-09-15
[root@strong ~]# timedatectl
Local time: Sun 2019-09-15 00:00:03 CST
Universal time: Sat 2019-09-14 16:00:03 UTC
RTC time: Sat 2019-09-14 16:00:03
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
仅仅更改日期,时间会变为00:00:00,故更改日期时需把对应的时间加上,例如:timedatectl set-time "2019-09-21 15:16:00"。
1.4 更改时区
1.4.1 列出所有时区
[root@strong ~]# timedatectl list-timezones
1.4.2 更改时区
[root@strong ~]# timedatectl set-timezone Asia/Shanghai
2 DATE命令
该命令在所有Linux系统都可用,用于设置和查看当前日期和时间,常用于脚本中以格式化的形式用于展示系统时间的详细信息。
2.1 展示当前日期和时间
1)不带任何格式展示
[root@strong ~]# date
Sat Sep 21 15:24:57 CST 2019
默认展示的是本地时间,以UTC的方式展示,需使用date --utc或date -u。
[root@strong ~]# date --utc
Sat Sep 21 07:25:50 UTC 2019
2)格式化展示
客制化日期和时间的展示格式,使用命令:date +"格式"。
常用的格式为:
控制格式
描述
%H
以HH格式展示小时;
%M
以MM格式展示分钟;
%S
以SS格式展示秒;
%d
以DD格式展示天数;
%m
以MM格式展示月;
%Y
以YYYY格式展示年;
%Z
时区;
%F
以YYYY-MM-DD格式展示日期,和%Y-%m-%d等价;
%T
以HH:MM:SS格式展示时间,和%H:%M:%S等价;
[root@strong ~]# date
Sat Sep 21 15:37:18 CST 2019
[root@strong ~]# date +"%Y-%m-%d %H:%M:%S"
2019-09-21 15:38:00
2.2 更改当前时间
更改当前时间,命令格式为:date --set HH:MM:SS。
[root@strong ~]# date --set 15:40:20
Sat Sep 21 15:40:20 CST 2019
2.3 更改当前日期
更改当前日期,命令格式为:date --set YYYY-MM-DD。
[root@strong ~]# date --set 2019-09-25
Wed Sep 25 00:00:00 CST 2019
仅仅更改日期,时间会变为00:00:00,故更改日期时需把对应的时间加上,例如:
[root@strong ~]# date --set "2019-09-21 15:42:35"
Sat Sep 21 15:42:35 CST 2019。
3 CLOCK命令
该命令是用于访问硬件时钟的工具,也称为Real Time Clock(RTC),对应的设置保存在/etc/adjtime文件中。硬件时钟独立于操作系统,即使系统关闭,它仍然工作,用于从硬件时钟展示时间。
3.1 展示当前日期和时间
[root@strong ~]# hwclock
Sat 21 Sep 2019 03:51:24 PM CST -0.368709 seconds
3.2 设置日期和时间
设置日期和时间的命令为:hwclock --set --date "dd mmm yyyy HH:MM"
[root@strong ~]# hwclock --set --date "21 Sep 2019 16:02:25"
[root@strong ~]# hwclock
Sat 21 Sep 2019 04:02:35 PM CST -0.342764 seconds
3.3 同步日期和时间
可以使用hwclock命令在硬件时钟和当前系统时间直接互相同步。
3.3.1 系统时间同步到硬件时钟
[root@strong ~]# hwclock --systohc
3.3.2 硬件时钟同步到系统时间
[root@strong ~]# hwclock --hctosys
在Linux中有硬件时钟与系统时钟两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。所有Linux相关指令与函数都是读取系统时钟的设定。因为存在两种不同的时钟,那么它们之间就会存在差异。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。
用date命令对系统时间进行设置后,并不会去修改硬件时钟,所以系统重启后,系统时间还算会去读取硬件时间,这就是为何date设置失效到原因。
因此,需要在设置系统时间后,将系统时间同步到硬件时钟。
clock/hwclock:
显示与设定硬件时钟(query and set the hardware clock (RTC)),两个命令相同。RTC=Real Time Clock,也就是硬件时钟。
命令参数:
-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)
命令示例:
1. 查看硬件时钟
2014年03月27日 星期四 11时03分50秒 -0.328520 seconds
[root@localhost ~]# hwclock -r
2014年03月27日 星期四 11时03分53秒 -0.797264 seconds
[root@localhost ~]# hwclock --show
2014年03月27日 星期四 11时04分01秒 -0.672267 seconds
2. clock与hwclock相同
[root@localhost ~]# type -a hwclock
hwclock is /sbin/hwclock
hwclock is /usr/sbin/hwclock
[root@localhost ~]# ll /sbin/hwclock /usr/sbin/hwclock
-rwxr-xr-x. 1 root root 46940 11月 22 23:27 /sbin/hwclock
lrwxrwxrwx. 1 root root 18 3月 26 19:27 /usr/sbin/hwclock - ../../sbin/hwclock
[root@localhost ~]# type -a clock
clock is /sbin/clock
[root@localhost ~]# ll /sbin/clock
lrwxrwxrwx. 1 root root 7 3月 26 19:27 /sbin/clock - hwclock
3. 同步系统时间到硬件时钟
[root@localhost ~]# hwclock2014年03月27日 星期四 18时50分51秒 -0.312960 seconds
[root@localhost ~]# date
2014年 03月 27日 星期四 10:50:55 CST
[root@localhost ~]# hwclock -w
[root@localhost ~]# hwclock2014年03月27日 星期四 10时51分15秒 -0.875387 seconds
同步网络时间到系统时间
[root@localhost ~]# ntpdate 210.72.145.4427 Mar 11:11:24 ntpdate[4766]: adjust time server 210.72.145.44 offset 0.011401 sec
210.72.145.44 (中国西安授时中心的官方时间同步服务器IP域名)
同步网络时间到系统时间后,就可以用hwclock -w将系统时间同步到硬件时间。
修改时区
可能部分系统在执行以上两步后,在重启后仍然失效,所以需要进行时区修改。
[root@localhost ~]# tzselect #按照提示进行选择时区
[root@localhost ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改系统时间配置文件
[root@localhost ~]# /etc/sysconfig/clock
#打开clock文件,将相关内容改成以下内容
UTC=false
ARC=false
ZONE="Asia/Shanghai"
重启系统
[root@localhost ~]# reboot
在 /etc/adjtime 中设置,默认、推荐的设置为UTC。\x0d\x0a可以用下面命令自动生成 /etc/adjtime:\x0d\x0aUTC:\x0d\x0a\x0d\x0a# hwclock --systohc --utc\x0d\x0a\x0d\x0alocaltime:# hwclock --systohc --localtime
第一步,选择最好的NTP服务地址
具体命令为ntpdate -q IP地址或域名
广东地区NTP优选结果如下:
①time4.cloud.tencent.com
②server time.asia.apple.com
③server cn.ntp.org.cn
④server ntp.aliyun.com
⑤server cn.pool.ntp.org
检查BIOS主板时间的命令
hwclock -r
NTP服务启停命令
sudo systemctl start/stop ntpd
检查查看ntp服务器有无和上层ntp连通
ntpstat
查看ntp服务器与上层ntp的状态
ntpq -pn
===server选项格式===
server host [ key n ] [ version n ] [ prefer ] [ mode n ] [ minpoll n ] [ maxpoll n ] [ iburst ]
其中host是上层NTP服务器的IP地址或域名,随后所跟的参数解释如下所示:
◆ key: 表示所有发往服务器的报文包含有秘钥加密的认证信息,n是32位的整数,表示秘钥号。
◆ version: 表示发往上层服务器的报文使用的版本号,n默认是3,可以是1或者2。
◆ prefer: 如果有多个server选项,具有该参数的服务器优先使用。
◆ mode: 指定数据报文mode字段的值。
◆ minpoll: 指定与查询该服务器的最小时间间隔为2的n次方秒,n默认为6,范围为4-14。
◆ maxpoll: 指定与查询该服务器的最大时间间隔为2的n次方秒,n默认为10,范围为4-14。
◆ iburst: 当初始同步请求时,采用突发方式接连发送8个报文,时间间隔为2秒。
===同步硬件时钟===
ntp服务,默认只会同步系统时间。
如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,
在/etc/sysconfig/ntpd文件中,添加【SYNC_HWCLOCK=yes】这样,就可以让硬件时间与系统时间一起同步。
允许BIOS与系统时间同步,也可以通过hwclock -w 命令。
hwclock命令用来查询和设置硬件时钟。
hwclock -r 读取并打印硬件时钟
hwclock -s 将硬件时钟同步到系统时钟
hwclock -w 将系统时钟同步到硬件时钟
系统时钟与硬件时钟
在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。
参考文档:
Linux服务器NTP客户端配置——
NTP服务、客户端配置详解——
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流