【Linux】硬件时钟, 系统时钟, 网络时钟, 时区修改和同步
基础认识
操作系统的时间(时钟)由以下4个部分决定:
- 时间数值
- 时间标准(本地时间/UTC/其他)
- 时区
- 夏令时(DST,Daylight Saving Time,部分适用,中国已经废止)
操作系统有两个时钟,分别是硬件时钟和系统时钟,大多数操作系统的时钟管理方式如下:
硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。
系统时钟则是指kernel中的时钟。
- 启动时根据硬件时钟设置系统时钟
- 维护准确的系统时钟
- 关机时根据系统时钟设置硬件时钟
常用命令
查看和修改Linux的时区
常见时区
(1)UTC 整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。
(2)GMT 格林威治标准时间 (Greenwich Mean Time)指位于英国伦敦郊区的×××格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)
(3)CST 中国标准时间 (China Standard Time)
GMT + 8 = UTC + 8 = CST
(4)DST夏令时(Daylight Saving Time) 指在夏天太阳升起的比较早时,将时间拨快一小时,以提早日光的使用。(中国不使用)
查看当前时区
命令 : timedatectl
修改设置Linux服务器时区
timedatectl set-timezone Asia/Shanghai
timedatectl
Local time: 三 2021-09-15 10:04:05 CST
Universal time: 三 2021-09-15 02:04:05 UTC
RTC time: 三 2021-09-15 02:04:05
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
timedatectl
timedatectl --help
timedatectl [OPTIONS...] COMMAND ...
Query or change system time and date settings.
-h --help Show this help message
--version Show package version
--no-pager Do not pipe output into a pager
--no-ask-password Do not prompt for password
-H --host=[USER@]HOST Operate on remote host
-M --machine=CONTAINER Operate on local container
--adjust-system-clock Adjust system clock when changing local RTC mode
--monitor Monitor status of systemd-timesyncd
-p --property=NAME Show only properties by this name
-a --all Show all properties, including empty ones
--value When showing properties, only print the value
Commands:
status Show current time settings
show Show properties of systemd-timedated
set-time TIME Set system time
set-timezone ZONE Set system time zone
list-timezones Show known time zones
set-local-rtc BOOL Control whether RTC is in local time
set-ntp BOOL Enable or disable network time synchronization
systemd-timesyncd Commands:
timesync-status Show status of systemd-timesyncd
show-timesync Show properties of systemd-timesyncd
list-timezones 列出系统上支持的时区
set-timezone 设定时区
set-time 设置时间
set-btp 设置同步ntp
时钟同步
用硬件时钟同步系统时钟:
hwclock --hctosys 或者 clock --hctosys
hc代表硬件时间,sys代表系统时间,即用硬件时钟同步系统时钟
用系统时钟同步硬件时钟:
hwclock --systohc或者clock --systohc
即用系统时钟同步硬件时钟
同步网络时间
同步互联网时间
ntpdate -u cn.pool.ntp.org
hwclock命令
Linux hwclock命令用于显示与设定硬件时钟。
在Linux中有硬件时钟与系统时钟等两种时钟。
硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。
系统时钟则是指kernel中的时钟。
当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。
语法
hwclock [--adjust][--debug][--directisa][--hctosys][--show][--systohc][--test]
[--utc][--version][--set --date=<日期与时间>]
参数:
- –adjust hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用–adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟。
- –debug 显示hwclock执行时详细的信息。
- –directisa hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟。
- –hctosys 将系统时钟调整为与目前的硬件时钟一致。
- –set --date=<日期与时间> 设定硬件时钟。
- –show 显示硬件时钟的时间与日期。
- –systohc 将硬件时钟调整为与目前的系统时钟一致。
- –test 仅测试程序,而不会实际更改硬件时钟。
- –utc 若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作。
- –version 显示版本信息。
查看和修改Linux的时间
查看时间和日期
命令 :
"date"
设置时间和日期
例如:将系统日期设定成2009年11月3日的命令
命令 :
"date -s 11/03/2009"
将系统时间设定成下午5点55分55秒的命令
命令 :
"date -s 17:55:55"
将当前时间和日期写入BIOS,避免重启后失效
命令 :
"hwclock -w"