系统时钟和硬件时钟

Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟。

硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中进行设置;系统时钟是指当前Linux Kernel中的时钟。但是在linux系统中真正起作用的是系统时间,硬件时钟系统的唯一作用是在linux系统没有运行时,保持时间的运行。当linux系统启动时,系统会自动将硬件时钟系统的时间同步到系统时间,这个同步不是直接覆盖系统时钟,仅仅是计算出系统关机状态下时间差值,并应用至系统时钟。并且在之后的整个linux系统运行过程中不再使用硬件时钟系统,而在linux系统关闭时,系统会自动将当前系统时间同步到硬件时钟系统

  Linux中的所有命令 (包括函数)都是采用的系统时钟设置。在Linux中,用于时钟查看和设置的命令主要有date、hwclock和clock。其中,clock和 hwclock用法相近,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。

  1、date

  查看系统时间

  # date

  设置系统时间

  # date --set=“07/07/06 10:19" (月/日/年 时:分:秒)

  2、hwclock/clock

  查看硬件时间

  # hwclock --show

  # clock --show

  设置硬件时间

  # hwclock --set --date="07/07/06 10:19" (月/日/年 时:分:秒)

  # clock --set --date="07/07/06 10:19" (月/日/年 时:分:秒)

  3、硬件时间和系统时间的同步

  硬件时钟同步至系统时钟:

  # hwclock --hctosys(hc代表硬件时间,sys代表系统时间)

  或者

  # clock --hctosys

  系统时钟同步至硬件时钟:

  # hwclock --systohc

  或者

  # clock --systohc


linux更改时间永久生效

  1. 手动设置系统时间:
sudo date -s "YYYY-MM-DD HH:MM:SS"
  1. 手动设置硬件时钟(以UTC时间为例):
sudo hwclock --systohc --utc
  1. 确保系统时间和硬件时钟同步。编辑/etc/rc.local文件(在某些发行版中可能不存在,你可以直接编辑/etc/rc.d/rc.local),添加以下行:
sudo hwclock --hctosys
sudo hwclock --hctosys

这样,系统启动时会自动同步硬件时钟到系统时间。

4.确保ntp服务或其他时间同步服务未运行,以避免它们在下次启动时覆盖你的更改。

5.如果你的系统使用systemd,可以创建一个systemd服务来设置硬件时钟:

创建一个新的服务文件/etc/systemd/system/hwclock-sync.service,内容如下:

[Unit]
Description=Set Hardware Clock in UTC 

[Service]
Type=oneshotExecStart=/usr/sbin/
hwclock --systohc --utc 

[Install]
WantedBy=multi-user.target

然后启用并启动服务:

sudo systemctl enable hwclock-sync.service
sudo systemctl start hwclock-sync.service

这样,在系统启动时,时间会自动设置为正确的值。

请根据你的Linux发行版和配置进行适当的调整。

实验环境是RedHat 6.8,验证前四部就可以设置成功,即重启操作系统后系统时间更改是生效的。