时间管理

概述

参考:

Time 管理

实现 NTP 协议的工具

ntpd # 在 centos8 中已不再支持,推荐使用新工具 Chrony 来实现 NTP 协议

Chrony # Chrony

date - 打印或设置系统日期和时间

Syntax(语法)

date [OPTIONS]… [+FORMAT]

可以通过 FORMAT 设置显示时间的格式

OPTIONS

  • -s # 从给定的字符串中设定时间。i.e. 设置时间
  • -d # 从给定的字符串中显示时间,而不是显示现在的时间。常用于判断给定的数字是否符合时间日期的格式 e.g. date -d 9999 +%H%M 不合法,date -d 1011 +%H%M 合法

FORMAT:

  • %F 年月日(年-月-日)
  • %Y
  • %m
  • %d
  • %H 小时
  • %M 分钟
  • %S
  • %s # 从 1970-01-01 00:00:00 UTC 时间开始经过的秒。i.e. 时间戳

EXAMPLE

  • date -s 2008/05/06 #
  • date -s 18:40:00
  • date +%H:%M # 显示当前小时与分钟
  • date -d 1011 +%H%M # 显示给定的小时与分钟
  • date +%x –> 10/21/2009 #
  • date +%m/%d/%Y # 10/21/2009
  • 2009-10-21 15:18:17
    • date “+%Y-%m-%d %H:%M:%S” #
  • 2021-12-20_15:41
    • date +%F_%H:%M

timedatectl - 控制系统时间和日期

Syntax(语法)

timedatectl [OPTIONS] [COMMAND]

若不加任何子命令和选项,则显示日期与时间相关信息

COMMAND:

  • status # 显示当前时间设定。(默认 COMMAND)
  • set-time TIME # 设置系统时间。
    • 这也将相应地更新 RTC 时间。时间可以以 “2012-10-30 18:17:16” 格式指定。
  • set-timezone ZONE # 设置系统的时区
  • list-timezones Show known time zones
  • set-local-rtc <true|false> # Control whether RTC is in local time
  • set-ntp <true|false> # 控制是否启用 NTP。

EXAMPLE

  • timedatectl set-time “2020-11-5 18:17:16” # 将系统时间设置为 2020 年 11 月 5 日 18 点 17 分 16 秒

hwclock [-rw] # 查看硬件时间(BIOS 的)

OPTIONS

  • -r # 查看现有 BIOS 时间,默认为-r 参数
  • -w # 将现在的 linux 系统时间写入 BIOS 中

当我们进行完 Linux 时间的校时后,还需要以 hwclock -w 来更新 BIOS 的时间,因为每次开机的时候,系统会重新由 BIOS 将时间读出来,所以, BIOS 才是重要的时间依据。

Linux 校时

调整 linux 系统时间和时区与 Internet 时间同步

一、修改时区:

rm -f /etc/localtime

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

修改为中国的东八区

clock -w

三、实现 Internet 时间同步(这里可以忽略上面两步)

方法 1. 开机的时候自动网络校时:

/usr/sbin/ntpdate -u 192.168.0.2 192.168.0.3 192.168.0.4; /sbin/hwclock -w

方法 2. 设定计划任务

crontab 格式如下:

# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# \* \* \* \* \* command to be executed

设定 crontab 计划任务也有两种方式:

1、写在/etc/crontab 里

代码:

00 11 * * * root ntpdate 210.72.145.44

每天 11 点与中国国家授时中心同步时间

每天 11 点与中国国家授时中心同步时间

当然前提是

apt-get install ntpdate

代码也可是

00 11 * * * root ntpdate us.pool.ntp.org

2、使用命令 crontab -e

crontab -e

10 5 * * * root ntpdate us.pool.ntp.org;hwclock -w

这样每天 5:10 自动进行网络校时,并同时更新 BIOS 的时间

################################

同步网络时间:输入 ntpdate time.nist.gov 同步网络时间

[root@localhost ~]# ntpdate time.nist.gov

12 Oct 17:25:01 ntpdate[2784]: step time server 132.163.4.103 offset 1147751.472254 sec

## 出现以上信息说明同步成功 ##

注:如提示命令不存在,直接输入:yum install ntp -y 安装 ntp 软件包


最后修改 May 8, 2024: file transfer, clearup (206d3aa5)