在Linux中设置时区并将系统时钟同步到您的时区
在本教程中,我们将研究如何在Linux中更改您的时区设置,以及如何使用NTP将Linux系统时钟同步到您的时区。
检查时区设置
检查当前时区设置。
date
输出:
2016年 03月 02日 星期三 02:50:15 EST
如您所见,我的系统设置为EST(东部标准时间)。 但是我现在住在中国。 因此,我需要将时区设置从EST更改为CST(中国标准时间)。
在基于Debian的Linux发行版上更改时区
在基于Debian的Linux发行版上,包括Debian,Ubuntu,Linux Mint,Elementary OS等,您可以使用此命令更改时区设置。
sudo dpkg-reconfigure tzdata
它将在终端中打开一个对话框,让您选择地理区域。
接下来,选择与您的时区相对应的城市或地区。 我住在中国,所以选择了上海。
当你打 好 按钮,您的系统时钟将立即更改为您的时区时钟。
与时区无关的更改时区设置的方法
此方法适用于所有Linux发行版。 首先打开一个终端并运行以下命令:
sudo ln -sf /usr/share/zoneinfo/
不要按 输入 但是,按 标签 代替。
将显示一个地理区域列表,现在在之后输入您所在区域的名称 须藤ln -sf / usr / share / zoneinfo /。 例如,我进入了亚洲。 然后按 标签 再次键。 将出现城市列表。
输入与您的时区相对应的城市名称。 例如,我进入上海。 现在按空格键并输入 / etc / localtime。 所以最后的命令是
sudo ln -sf /usr/share/zoneinfo/your-geographic-area/your-city /etc/localtime
按Enter键运行此命令。 它将创建一个符号链接指向 / etc / localtime 文件到您的特定时区文件。 您可以通过输入以下命令来查找系统时钟 日期 终端中的命令。 但是具有桌面环境(例如XFCE)的用户需要注销并重新登录,以查看任务栏上的更改。
实时时钟
RTC代表实时时钟,也称为硬件时钟。 此时钟由计算机主板的CMOS电池供电。 即使关闭计算机,此时钟也会一直运行。 有时RTC时间不正确。
要找出计算机上的RTC时间,请运行以下命令:
timedatectl
输出:
Local time: Wed 2016-03-02 17:47:19 CST Universal time: Wed 2016-03-02 09:47:19 UTC RTC time: Wed 2016-03-02 09:47:19 Time zone: Asia/Shanghai (CST, +0800) Network time on: yes NTP synchronized: yes RTC in local TZ: no
如您所见,我的当地时间现在 17:49:19,但RTC时间为 09:47:19。 RTC时间不在我的本地时区,如果RTC时间不正确,有时可能会导致问题。 RTC时间不可靠。
要让您的系统以UTC标准读取RTC时间,请执行以下命令。
timedatectl set-local-rtc 0
要让系统读取本地时区的RTC时间,请运行以下命令
timedatectl set-local-rtc 1
建议您的系统以UTC标准读取RTC时间,以防止意外行为。
将系统时钟同步到您的时区
有时,即使您设置了正确的时区,您的系统时钟仍然可能不正确。 为了确保系统时钟同步到本地时区,您需要NTP。
NTP的工作是在您的网络上提供准确的时间,并且有许多服务都依赖准确的时间来正确运行。 NTP同步网络中的时钟,以使时间尽可能精确。 NTP是一种应用程序层协议,它使用UDP作为传输层协议。 网络时间服务器从原子钟获取时间。
在systemd上,您可以使用timedatectl启用NTP同步。
sudo timedatectl set-ntp true
上面的命令将启动并启用systemd-timesyncd服务。 现在检查状态
timedatectl status
输出:
Local time: Wed 2016-03-02 18:30:35 CST Universal time: Wed 2016-03-02 10:30:35 UTC RTC time: Wed 2016-03-02 10:30:35 Time zone: Asia/Shanghai (CST, +0800) Network time on: yes NTP synchronized: yes RTC in local TZ: no
您可以看到网络时间已打开,并且启用了NTP同步。 要检查时间同步的状态:
sudo systemctl status systemd-timesyncd
输出:
● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2016-03-02 18:30:29 CST; 1h 37min ago Docs: man:systemd-timesyncd.service(8) Main PID: 2243 (systemd-timesyn) Status: "Synchronized to time server 202.112.29.82:123 (0.arch.pool.ntp.org)." Tasks: 2 (limit: 512) CGroup: /system.slice/systemd-timesyncd.service └─2243 /usr/lib/systemd/systemd-timesyncd