第二十五章 Linux系统时间管理详解

一、概述

在Linux中有硬件时钟与系统时钟两种时钟。硬件时钟是指主板上的时钟设备对应的时钟,也就是通常可以在BIOS画面设定的时钟;系统时钟则是指kernel中的时钟;所有Linux相关指令与函数都是读取系统时钟的设定。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟就会独立运行。

二、显示或设置系统日期与时间-date

1.含义

date命令来自于英文单词的时间、时钟,其功能是用于显示或设置系统日期与时间信息。运维人员可以根据想要的格式来输出系统时间信息,时间格式MMDDhhmm[CC][YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数。

语法格式:date [选项] [+输出形式]

2.常用参数

-d datestr 显示 datestr 中所设定的时间 (非系统时间),自定义时间
-s datestr 将系统时间设为 datestr 中所设定的时间
-u 显示目前的格林威治时间
--help 显示帮助信息
--version 显示版本编号

3.常用示例

以默认格式输出系统当前的日期与时间信息

[root@jindada ~]# date
Wed Jul 29 11:19:19 CST 2020

按照“年-月-日”的指定格式输出系统当前的日期信息

[root@jindada ~]# date  +%Y		#世纪
2020
[root@jindada ~]# date  +%y		#年代
20
[root@jindada ~]# date  +%m		#月份
07
[root@jindada ~]# date  +%d		#日期 
29

[root@jindada ~]# date  +%Y-%m-%d
2020-07-29

[root@jindada ~]# date +%F		#显示日期 
2020-07-29


[root@jindada ~]# date  +%y-%m-%d
20-07-29

按照“小时:分钟:秒”的指定格式输出系统当前的时间信息

[root@jindada ~]# date +%H		#时
11
[root@jindada ~]# date +%M		#分
23
[root@jindada ~]# date +%S		#秒
24
[root@jindada ~]# date
Wed Jul 29 11:23:28 CST 2020
[root@jindada ~]# date +%H:%M:%S
11:23:43

[root@jindada ~]# date +%T		#显示时间 
11:24:08

[root@jindada ~]# date +%F-%T
2020-07-29-11:24:34

按照星期的指定格式输出系统当前的日期信息

[root@jindada ~]# date +%w		#周几
3
[root@jindada ~]# date +%W		#今年第几周 
30

[root@jindada ~]# date +%s		#距离1970年1月1日0分0秒过来多少秒 
1595993167

4.自定义日期示例

[root@jindada ~]# date +%F
2020-07-29
[root@jindada ~]# date  -d  "-1 day"  +%F
2020-07-28

[root@jindada ~]# date  -d  "+1 day"  +%F
2020-07-30
[root@jindada ~]# date  -d  "+1 month"  +%F
2020-08-29
[root@jindada ~]# date  -d  "-1 month"  +%F
2020-06-29
[root@jindada ~]# date  -d  "-1 year"  +%F
2019-07-29
[root@jindada ~]# date  -d  "+1 year"  +%F
2021-07-29

5.修改系统时间

[root@jindada ~]# date
Wed Jul 29 11:31:42 CST 2020
[root@jindada ~]# date  -s  20200730
Thu Jul 30 00:00:00 CST 2020
[root@jindada ~]# date
Thu Jul 30 00:00:08 CST 2020
[root@jindada ~]# date  -s  2020/07/29
Wed Jul 29 00:00:00 CST 2020
[root@jindada ~]# date
Wed Jul 29 00:00:02 CST 2020
[root@jindada ~]# date  -s  11:32:30
Wed Jul 29 11:32:30 CST 2020
[root@jindada ~]# date
Wed Jul 29 11:32:31 CST 2020
[root@jindada ~]# date  -s  "20200730  11:00:00"
Thu Jul 30 11:00:00 CST 2020

三、设置日期与时间-ntpdate

1.含义

ntpdate命令是用来设置本地日期和时间。它从指定的每个服务器获得了一些样本,并应用标准 NTP 时钟过滤器和选择算法来选择最好的样本。

使用很多服务器可以大幅度改善 ntpdate 命令的可靠性与精度。尽管能使用单一服务器,但您能通过提供至少三个或四个服务器以获得更好的性能。

如果一个类似 xntpd 守护程序的 NTP 服务器守护程序正在同一主机上运行,命令将拒绝ntpdate设置日期。

语法格式:ntpdate [参数]

2.安装

[root@jindada ~]# yum install ntpdate  -y 

3.常用参数

-aKeyid 使用 Keyid 来认证全部数据包
-b 通过调用 settimeofday 子例程来增加时钟的时间

4.时间同步

# 向时间服务器进行同步时间 

ntp.aliyun.com   

ntp1.aliyun.com   ....   ntp7.aliyun.com  

[root@jindada ~]# ntpdate   ntp.aliyun.com
29 Jul 11:36:33 ntpdate[31370]: step time server 203.107.6.88 offset -84415.000442 sec
[root@jindada ~]# date
Wed Jul 29 11:36:35 CST 2020
[root@jindada ~]# date  -s  20200730
Thu Jul 30 00:00:00 CST 2020
[root@jindada ~]# ntpdate   ntp.aliyun.com
29 Jul 11:36:56 ntpdate[31392]: step time server 203.107.6.88 offset -44591.413933 sec
[root@jindada ~]# date
Wed Jul 29 11:37:02 CST 2020

四、设置日期与时间-hwclock

1.含义

hwclock命令是一个硬件时钟访问工具,它可以显示当前时间、设置硬件时钟的时间和设置硬件时钟为系统时间,也可设置系统时间为硬件时钟的时间。

在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。

语法格式:hwclock [参数]

2.常用参数

--debug 显示hwclock执行时详细的信息。
--directisa hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟。
--hctosys 将系统时钟调整为与目前的硬件时钟一致。
--set --date=<日期与时间> 设定硬件时钟。
--show 显示硬件时钟的时间与日期。
--systohc(-s) 将硬件时钟调整为与目前的系统时钟一致。
--test 仅测试程序,而不会实际更改硬件时钟。
--utc 若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作。
--version 显示版本信息。

3.常见示例

查看硬件时间

[root@jindada ~]# hwclock
Tue 08 Nov 2022 03:01:49 PM CST  -0.832248 seconds

设置硬件时间要依赖于操作系统时间,具体方法如下

[root@jindada ~]# hwclock -s #将系统时间同步到BIOS

[root@jindada ~]# hwclock -w #将BIOS时间同步系统 

查看版本信息

[root@jindada ~]# hwclock -v 
hwclock from util-linux 2.23.2

五、设置系统时间与日期-timedatectl

1.含义

timedatectl命令来自于英文词组”time date control“的缩写,其功能是用于设置系统时间与日期。与date命令设置日期时间不同,timedatectl命令设置过的日期时间信息将被写入到系统配置文件中,从而立即且长期有效,不会随系统重启后而失效,同时还能够查看系统时间与日期,一站式搞定系统时间~

语法格式:timedatectl [参数]

2.常用参数

status 显示当前时间设置
set-time TIME 设置系统时间
set-timezone ZONE 设置系统时区
list-timezones 显示已知时区
set-ntp (true/false) 开启或关闭NTP

3.常用示例

查看当前系统中的时区、日期、时间等信息

[root@jindada ~]# timedatectl status
      Local time: Tue 2022-11-08 15:09:28 CST
  Universal time: Tue 2022-11-08 07:09:28 UTC
        RTC time: Tue 2022-11-08 07:09:28
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: no
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

关闭NTP时间同步服务器功能

[root@jindada ~]# timedatectl set-ntp false 
[root@jindada ~]# timedatectl status
      Local time: Tue 2022-11-08 15:12:30 CST
  Universal time: Tue 2022-11-08 07:12:30 UTC
        RTC time: Tue 2022-11-08 07:12:30
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: no
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

设置系统日期

[root@jindada ~]# timedatectl set-time 2022-11-11

设置系统时间

[root@jindada ~]# timedatectl set-time 20:18

查看可选时区

[root@jindada ~]# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
………………省略部分输出信息………………

设置系统时区

[root@jindada ~]# timedatectl set-timezone "Asia/Shanghai"
posted @ 2020-07-30 18:57  年少纵马且长歌  阅读(254)  评论(0编辑  收藏  举报