系统时钟和硬件时钟
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更改时间永久生效
- 手动设置系统时间:
sudo date -s "YYYY-MM-DD HH:MM:SS"
- 手动设置硬件时钟(以UTC时间为例):
sudo hwclock --systohc --utc
- 确保系统时间和硬件时钟同步。编辑
/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,验证前四部就可以设置成功,即重启操作系统后系统时间更改是生效的。