由于一些业务需要调用到系统时间进行工作,所以同步系统时间也需要注意,以下是网络同步时间的教程,Linux的时间分为SystemClock(系统时间)和RealTimeClock(硬件时间,简称RTC)。
系统时间:指当前Linux Kernel中的时间。
硬件时间:主板上有电池供电的时间。
1. 查看当前服务器时区&列出时区并设置时区(如已是正确时区,请略过):
- timedatectl:查看服务器的时区
- timedatectl list-timezones:查看时区的列表
- timedatectl set-timezone Asia/Shanghai:选择时区
先执行date命令查看是否和系统时间同步,不同步进行下步2。
2. 时间同步的方法有很多,我选择的是ntp进行网络同步,步骤:
- hwclock --show:查看硬件时间
- ntpdate ntp.api.bz:同步系统时间
- hwclock -w:保存到硬件时钟
- hwclock --hctosys:从硬件同步系统时间
再执行date命令查看系统时间是否已经同步。
3. 为了防止一些云服务器无法把时间保存到硬件时间,重启服务器后时间有打乱,建议把同步命令加入到定时任务(该步骤可以按需要选择操作,同时可以检查是否有异常定时任务):
- 执行 crontab -e:添加任务
- 添加以下内容:30 ntpdate ntp.api.bz
- 保存退出:wq
添加任务成功后,每隔30分钟同步一次时间。
如果你不能理解 crontab 的格式,可以参考下:
时间格式如下:f1 f2 f3 f4 f5 program
其中,f1 表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
当 f1 为 时表示每分钟都要执行 program,f2 为 时表示每小时都要执行程序,其余类推。
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推。
当 f1 为 /n 时表示每 n 分钟个时间间隔执行一次,f2 为 /n 表示每 n 小时个时间间隔执行一次,其余类推。
当 f1 为 a,b,c,... 时表示第 a、b、c... 分钟要执行,f2 为 a,b,c,... 时表示第 a、b、c... 小时要执行,其余类推。
以上是关于网络同步时间的教程,希望对你有所帮助。