以Linux服务器时间为中心,如何观测和调整系统时间?
当前,在现代网络与技术的时代,Linux 服务器亦存在其他的感知与挑战。特别是系统的时间同步,这更是 Linux 服务器常遇到的有关困难之一。准确、同步的时间是服务器进行正常操作的要求之一,尤其对于一些精确计时的任务,时间的同步就更为重要。那么,在这篇文章中我们着重讲解以 Linux 服务器时间为中心,如何观测和调整系统时间。
1、时间同步
不同的 Linux 发行版固然存在许多相同的内核功能和支撑,但它们仍旧可能存在一定的扭曲。毕竟一些不同 Linux 发行版的配置与支持,如时间同步设置,还是存在少量差异的。在 Linux 中,为了保证时间的精确度,操作系统一般依赖一个叫做 NTP(Network Time Protocol,网络时间协议)的网络时间协议。NTP 是一个开放的、可伸缩的时间同步解决方案,可以克服网络的延迟、抖动误差及时钟偏差等现象,统一设备时间,以满足精确的时间要求。
在需要使用 NTP 服务的机器上,必须提前安装 NTP。而在 Linux 发行版中,经常有较为相似的安装流程。在 Ubuntu 中,可以用以下命令安装 NTP 服务:
```
sudo apt-get install ntpdate
```
如果你使用 CentOS,则可以使用以下命令安装:
```
sudo yum install ntp
```
接下来,必须将该服务器的时间与网络的时间进行同步。可以使用以下命令进行手动授时:
```
ntpdate time.nist.gov
```
2、时间查看
有时候,我们需要手动查看当前 Linux 系统的时间输入以下命令:```
date
```
该命令将返回系统的当前日期和时间,通常格式如下:
```
Sat Jan 25 14:22:55 EST 2020
```
在这个样例中,“Sat Jan 25 14:22:55 EST 2020” 是表示当前时间的字符串,其中日期是“Jan 25(1月25日)”, 时间是“14:22:55(下午 2:22:55)”,时区是 EST 美国东部标准时间。在只查看日期或时间时,还可以使用其他的格式化选项。例如,要显示当前时间的小时、分钟和秒:
```
date +%T
```
3、系统时间调整
在确保了时间同步之后,就可以对 Linux 系统的时间进行调整。要升高或降低时钟计数器,系统管理员可以使用 date 命令。例如,如果想将时间提高 30 秒,可执行以下命令:
```
sudo date +%s -s "$(($(date +%s)+30))"
```
如果要将时间回调 5 分钟,可执行以下命令:
```
sudo date +%s -s "$(($(date +%s)-300))"
```
需要注意,时间设置的正确性对系统稳定性和数据完整性有重要影响。
4、硬件时钟与系统时钟
在 Linux 上,通常有硬件时钟(RTC)和系统时钟(Softclock)集成两种时钟。硬件时钟通常是由计算机 BIOS 控制,在 Linux 启动时由内核读取,因此硬件时钟只在系统准备关机时更新。系统时钟由内核控制,它产生和维护当前时间的所有用处。
但是在硬件时钟与软件时钟同步方面,存在问题的通常是在硬件时钟使用错误的时区。由于硬件时钟通常无法详细设置,这时需要在 Linux 系统启动时记录正确的硬件时钟时间和方区。
在"/etc/sysconfig/clock" 的最后几行中,可以检查时钟设置:
```
ZONE="Australia/Sydney" UTC=true ARC=false
```
将 systemd 启动服务配置文件 /etc/systemd/system.conf 配置为使用 local RTC 设置硬件时钟。
```
[Time]
...
# Use RTC (Real-Time Clock) as a boot clock source (only for systems that support it).
# Note that this requires exposing the RTC device to user mode, which is by default not done
# on modern systems. systemd-tmpfiles-setup.service(8) will attempt to create the required
# device nodes by itself unless CONFIG_RTC_SYSTOHC is disabled at build-time.
#Set only if you want to use RTC for clock synchronization.
#Otherwise uses NTP synchronization (default).
#Defaulf value is "no".
#To enable RTC synchronization, you need to make sure that /run/systemd/ntp-units.d/ directory exists.
#This is created by systemd-tmpfiles-setup.service(8). If the directory doesnt exist
#it can be created manually or by running this command:
# systemd-tmpfiles --create --prefix /run/systemd/ntp-units.d/
ForceLocalRTC=yes
...
```
后面的代码 ForceLocalRTC=yes 就是启用了硬件时钟。
最后,总结一下本文讲述的内容:我们首先讲解了时间同步的原理和方法,在 Linux 系统中使用 NTP 服务来进行时间同步;然后我们介绍了时间查看命令,可以手动查看当前 Linux 系统的时间;接着我们阐述了如何进行系统时间调整,管理员可以使用 date 命令来升高或降低时钟计数器;最后,我们涉及两种时钟:硬件时钟和系统时钟,Linux 系统将两种时间进行整合管理,并且进行相应的配置。
虽然时间调整看上去是一件简单、轻松的操作,但在实际操作中仍需要考虑到多方面的因素,保证系统时钟的正确性与稳定性。因此,我们建议大家在进行时间调整操作之前,首先了解相关配置和设置。
在实际的 Linux 服务器运行中,时间同步也是一个非常重要的问题,管理员必须事先了解和熟练掌握时间同步这个重要的技术点。只有做好时间同步,才能保证服务器时间的准确和整个 Linux 系统的稳定性。
本文皆由ntptimeserver.com作者独自创作为原创,如有侵权请联系我们,转载请注明出处!