
使用date命令将服务器时间设为中心时间 - 从操作到原理
文章内容描述:
使用date命令显示服务器时间并将其设为中心时间是一项重要的技能,尤其是对于系统管理员或任何需要对计算机时间进行管理的人来说。在许多场景中,正确的时间同步是非常关键的,例如,在互联网领域,不同的服务器之间必须相同的时间来协同工作。在本文中,我们将重点介绍如何使用date命令设置系统时间,包括原理和操作等方面。
1. 时间和时间戳
时间戳可以描述一个特定时刻的时间值,它可以是任何单位时间点的秒数。 通常假定1970年1月1日为纪元日,Unix操作系统使用的时间戳是指从该日开始算起的秒数。在大多数应用程序中,日期和时间都以时间戳的形式存储。
时间戳的原理是什么? 一个时钟源(实际上几乎是石英晶体的电子时钟)发出一个有规律的波形电信号。 这个波形被计算机数字化,并且被存储为一个值。 当我们将这个数字化的波形转换为一个可理解的时间戳时,我们要做的就是计算从纪元开始的秒数。
2. date命令基础用法
date是一个Unix和Linux操作系统中通用的命令行实用程序,含义是"显示或设置系统时间"。使用date命令可以获取系统的当前日期和时间。
date命令的基本语法如下:
```
date [+FORMAT]
date [-u--utc--universal] [+FORMAT]
date [-I[TIMESPEC]] [+FORMAT]
date [-d DATE] [+FORMAT]
date [--version--help]
```
我们可以添加参数来调整格式以及更改时间值。 下面的命令将日期和时间格式化为“YYYY-MM-DD HH:MM:SS”。
```
$ date +"%Y-%m-%d %H:%M:%S"
2021-08-19 16:08:59
```
还可以使用date命令设置系统时间。
```
$ date --set "2021-08-20 11:11:11"
Fri Aug 20 11:11:11 UTC 2021
```
3. 将服务器时间设置为中心时间
在 Linux 中,一个系统时间是由硬件时钟和软件时钟组成的。硬件时钟是一直在运作的时钟,他即使断电也不会丢失时间数据。 软件时钟是操作系统中的一个计时器,当系统启动时,它引导硬件时钟的一部分时间作为系统时间,而软件时钟独立计时。
我们可以使用date命令的参数将服务器时间设为中心时间。
首先,我们需要确定当前服务器上的时区。 可以使用tzselect命令进行查看。然后,我们必须将其转换为时区格式并将其设置为时区默认值。
```
$ tzselect
# output:
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
1) Africa
2) Americas
3) Antarctica
4) Arctic Ocean
5) Asia
6) Atlantic Ocean
7) Australia
8) Europe
9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the Posix TZ format.
# select option 5 for "Asia"
# select option 10 for "Pacific Ocean"
# As an example, I will select Pacific Ocean
Please select a country or region.
1) Fiji
2) New Zealand
3) Tonga
# select option 2 for "New Zealand"
Please select one of the following time zone regions.
1) Auckland 5) Chatham Islands
2) Wellington 6) Samoa
# select option 1 for "Auckland"
The following information has been given:
New Zealand
Auckland
Therefore TZ=Pacific/Auckland will be used.
Local time is now: Thu Aug 19 17:12:50 NZST 2021.
Universal Time is now: Thu Aug 19 05:12:50 UTC 2021.
Is the above information OK?
1) Yes
2) No
# select option 1 to confirm
You can make this change permanent for yourself by appending the line
TZ=Pacific/Auckland; export TZ
to the file .profile in your home directory; then log out and log in again.
Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Pacific/Auckland
```
然后,我们可以将服务器时间设置为中心时间。
```
$ sudo ln -sf /usr/share/zoneinfo/Pacific/Auckland /etc/localtime
```
这个命令将硬链接/usr/share/zoneinfo/Pacific/Auckland和/etc/localtime关联,这意味着/etc/localtime将作为系统上的时区信息来源。
4. NTP的使用
使用date和硬件时钟进行时间同步是可行的,但无法实现完全准确的时间同步,因此,人们发明了网络时间协议(NTP)。 NTP是一种协议,用于在互联网上同步计算机的挂钟。 NTP使用时间服务器的时间进行时间同步,网络延迟和时间差异等都会被考虑在内,以保证更好的同步效果。
安装NTP客户端
```
$ sudo apt-get update
$ sudo apt-get install ntp
```
在/etc/ntp.conf中配置NTP服务器。例如,添加以下代码会让您的系统使用NTP服务器time.apple.com。
```
server time.apple.com
```
更新/etc/ntp.conf文件之后,可以从ntp服务器获取时间。
```
sudo ntpdate time.apple.com
```
总结
当我们需要将服务器时间设置为中心时间时,我们可以使用date命令来操作。我们可以确定服务器上的时区并将其设置为默认值。 然后,将本地时间与中心时间同步。 NTP协议是更好的时间同步选择,可以使用NTP客户端并配置ntp.conf文件以同步时间。准确地进行时间同步对许多计算机应用程序至关重要。了解如何使用date命令和NTP协议对计算机时钟进行管理是一项重要的技能。上一篇:欧姆龙PLC与服务器时间同步方法汇总 下一篇:使用Linux命令查看服务器时间同步状态
山河电子因为专业所以无惧任何挑战
北京山河锦绣科技开发中心,简称:山河电子经验专注于PNT行业领域技术,专业从事授时web管理开发、信创麒麟系统应用、北斗时间频率系统、金融PTP通用解决方案以及特需解决方案的指定,在授时领域起到领导者地位,在NTP/ptp方案集成和市场服务工作中面对多样化和专业化的市场需求,山河电子致力于设计和开发满足不同用户真实需求的产品和解决方案,技术业务涉航空航天、卫星导航、军民通信及国防装备等领域,为我国深空探测、反隐身雷达、授时中心铯钟项目等国家重大工程建设提供了微波、时间频率基准及传递设备。
