小编这篇文章将详细介绍 Linux 硬件时间、系统时间(UTC时间)、本地时间、时区和夏令时这些概念。时间的概念在 Linux 中是很重要,比如日志时间戳、定时任务 crontab、数据库事务、SSL 证书有效期、网络报文时序等等。硬件时间(也称为实时时钟,RTC - Real Time Clock)是计算机主板上的一个电池供电的时钟芯片。它负责在计算机关闭或断电时继续跟踪时间。硬件时间的特点包括:- 独立性:硬件时间在计算机关机时仍然保持运行,这使得系统重启后能够恢复到上次关闭时的时间。
- 设置方法:硬件时间可以通过 BIOS 设置界面进行调整,通常是在计算机启动时按特定键进入 BIOS 设置。
- 格式:硬件时间通常以 UTC(协调世界时间)格式存储。
大部分操作系统在启动时会从RTC读取时间,然后设置系统时间。同样,操作系统也可以将系统时间写回到RTC中。在Unix和类Unix系统中,hwclock命令可以用来查询和设置RTC时间。例如:# 查询硬件时间hwclock --show# 将系统时间设置为硬件时间hwclock --systohc# 将硬件时间设置为系统时间hwclock --hctosys
系统时间是操作系统内部维护的时间,它通常在系统启动时从硬件时间读取,并在系统运行期间持续更新。系统时间的特点包括:- 运行时更新:当系统处于运行状态时,内核会不断更新系统时间,以反映当前的时间。
- 格式:系统时间也通常使用 UTC 格式,但可以通过设置本地时区来显示为本地时间。
系统时间通常使用协调世界时(UTC)表示。UTC是一种基于原子时钟的时间标准,全球各地的科学家通过精密测量来维护它。它与格林尼治标准时间(GMT)非常接近,但不受地球自转速度变化的影响。在Unix和类Unix系统中,date命令可以用来查询和设置系统时间:# 查询系统时间(UTC)date -u# 查询本地时间(由系统时间UTC和时区共同决定)date# 设置本地时间(后面那串是本地时间)(设置本地时间会同样设置系统时间,只不过会自动帮你做时区转换)date -s "2026-01-01 00:00:00"# 直接设置系统时间(不推荐,一般通过设置本地时间来设置系统时间,因为这样设置你还得把后面那串时间计算一下时区)date -u -s "2026-01-01 00:00:00"
本地时间是基于用户所设定的时区对系统时间进行转换后的时间。它反映了用户所在地区的时间。相关的特点包括:- 时区影响:本地时间由系统时间和设置的时区决定。不同地区的用户可以根据自己的需求设置不同的时区。
- 命令查看:使用 date 命令同样可以查看本地时间。系统会自动根据时区配置转换显示。
在Unix和类Unix系统中,date命令默认显示的是本地时间:date +"%Y-%m-%d%H:%M:%S%Z"
时区是指地球上某个区域所采用的标准时间。因为地球的自转,世界各地的时间并不相同。以下是有关时区的一些重要信息:- UTC 与 GMT:UTC(协调世界时间)是国际标准时间,而 GMT(格林威治时间)是英国标准时间。尽管两者有细微的差别,但在很多情况下可以互换使用。
- 区域划分:世界被划分为多个时区,每个时区通常相差一个小时(如 UTC+1、UTC-5 等)。
在Unix和类Unix系统中,可以使用tzselect命令选择时区,然后将选定的时区链接到/etc/localtime:# 选择时区tzselect# 设置时区ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 列出所有可用的时区timedatectl list-timezones# 设置时区sudo timedatectl set-timezone Asia/Shanghai
夏令时(Daylight Saving Time, DST)是一种在夏季月份将时钟拨快一小时的做法,旨在更有效地利用日光。主要特点包括:- 实施地区:并不是所有地方都实施夏令时。主要在北美和欧洲等地区使用。
- 时间调整:夏令时通常在春季的某个时刻开始(如三月的第二个星期日),在秋季结束(如十一月的第一个星期日)。
- 自动调整:在 Linux 系统中,如果安装了支持夏令时的时区文件,系统会自动处理夏令时的转换。
Linux 中这些概念可以帮助用户更好地配置和管理系统时间,确保时间的准确性和一致性。通过使用相应的命令和工具,用户可以方便地查看和设置系统时间,适应不同地区和需求的时间管理。