如何在Debian 9上设置时间同步

介绍

准确的计时已成为现代软件部署的关键组成部分。无论是确保以正确的顺序记录日志还是正确应用数据库更新,不同步的时间都可能导致错误,数据损坏和其他难以调试的问题。

Debian 9内置了时间同步,默认情况下使用ntp包提供的标准ntpd时间服务器激活。在本文中,我们将介绍一些与时间相关的基本命令,验证ntpd是否处于活动状态并连接到对等端,并了解如何激活备用systemd-timesyncd网络时间服务。

先决条件

在开始本教程之前,您将需要一个Debian 9服务器,没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

一个具有sudo权限,non-root的用户,如本Debian 9服务器设置教程中所述

导航基本时间命令

查找服务器上时间的最基本命令是date。任何用户都可以输入此命令来打印日期和时间:

date
Tue Sep  4 17:51:49 UTC 2018

大多数情况下,您的服务器将默认为UTC时区,如上面的输出所示。UTC是世界协调时间,经度为零度的时间。当您的基础架构跨越多个时区时,始终如一地使用通用时间可以减少混淆。

如果您有不同的要求并需要更改时区,则可以使用该timedatectl命令执行此操作。

首先,列出可用的时区:

timedatectl list-timezones

时区列表将打印到您的屏幕。您可以按SPACE向下翻页,然后b翻页。找到正确的时区后,记下它,然后键入q以退出列表。

现在使用timedatectl set-timezone设置时区,确保将下面突出显示的部分替换为您在列表中找到的时区。你需要用timedatectl来使用sudo来实现该变化:

sudo timedatectl set-timezone America/New_York

您可以再次运行date来验证更改:

date
Tue Sep  4 13:52:57 EDT 2018

时区缩写应反映新选择的值。

现在我们知道如何检查时钟和设置时区,让我们确保我们的时间正确同步。

检查ntpd的状态

默认情况下,Debian 9运行标准的ntpd服务器,以使您的系统时间与外部时间服务器池保持同步。我们可以使用以下systemctl命令检查它是否正在运行:

sudo systemctl status ntp
● ntp.service - LSB: Start NTP daemon
   Loaded: loaded (/etc/init.d/ntp; generated; vendor preset: enabled)
   Active: active (running) since Tue 2018-09-04 15:07:03 EDT; 30min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 876 ExecStart=/etc/init.d/ntp start (code=exited, status=0/SUCCESS)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/ntp.service
           └─904 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 105:109
. . .

active (running)状态表明NTPD启动正常。要获得有关ntpd状态的更多信息,我们可以使用以下ntpq命令:

ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
-eterna.binary.n 204.9.54.119     2 u  240  256  377   35.392    0.142   0.211
-static-96-244-9 192.168.10.254   2 u   60  256  377   10.242    1.297   2.412
+minime.fdf.net  83.157.230.212   3 u   99  256  377   24.042    0.128   0.250
*t1.time.bf1.yah 98.139.133.62    2 u   31  256  377   11.112    0.621   0.186
+x.ns.gin.ntt.ne 249.224.99.213   2 u  108  256  377    1.290   -0.073   0.132
-ord1.m-d.net    142.66.101.13    2 u  473  512  377   19.930   -1.764   0.293

ntpq是ntpd的查询工具。该-p标志要求提供关于所述NTP服务器(或信息p EERS)NTPD连接。您的输出会略有不同,但应列出默认的Debian池服务器以及其他一些服务器。请记住,ntpd建立连接可能需要几分钟时间。

切换到systemd-timesyncd

可以使用systemd的内置时间同步组件来替换ntpd。timesyncd是ntpd的轻量级替代品,与systemd集成得更多。但请注意,它不支持作为时间服务器运行,并且它在用于保持系统时间同步的技术方面稍微不那么复杂。如果您正在运行复杂的实时分布式系统,您可能希望坚持使用ntpd。

要使用timesyncd,我们必须首先卸载ntpd:

sudo apt purge ntp

然后,启动timesyncd服务:

sudo systemctl start systemd-timesyncd

最后,检查服务的状态以确保它正在运行:

sudo systemctl status systemd-timesyncd
● systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/systemd-timesyncd.service.d
           └─disable-with-time-daemon.conf
   Active: active (running) since Tue 2018-09-04 16:14:23 EDT; 1s ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 3399 (systemd-timesyn)
   Status: "Synchronized to time server 198.60.22.240:123 (0.debian.pool.ntp.org)."
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/systemd-timesyncd.service
           └─3399 /lib/systemd/systemd-timesyncd

我们可以使用-+timedatectl来打印出systemd当前对时间的理解:

timedatectl
      Local time: Tue 2018-09-04 16:15:34 EDT
  Universal time: Tue 2018-09-04 20:15:34 UTC
        RTC time: Tue 2018-09-04 20:15:33
       Time zone: America/New_York (EDT, -0400)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no

这将打印出本地时间,通用时间(如果您没有从UTC时区切换,可能与本地时间相同),以及一些网络时间状态信息。Network time on: yes表示启用了timesyncd,NTP synchronized: yes表示时间已成功同步。

结论

在本文中,我们展示了如何查看系统时间,更改时区,使用ntpd以及切换到systemd的timesyncd服务。如果您有比我们在此处所述的更复杂的计时需求,您可以参考官方的NTP文档,还可以查看NTP池项目,这是一个全球志愿者团队,提供世界上大部分的NTP基础设施。

更多Debian教程请前往腾讯云+社区学习更多知识。


参考文献:《How To Set Up Time Synchronization on Debian 9》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大魏分享(微信公众号:david-share)

PowerVM 环境下实施 PowerHA7.1 要点

前言 随着 PowerVM 使用的越来越多,在虚拟化环境下实施 PowerHA 的案例会越来越多。传统 PowerHA6.1 在物理分区下实施是比较经典的配置,...

38440
来自专栏菩提树下的杨过

老生常谈:利用Membership实现SSO(单点登录)

虽然有一些现成的第三方解决方案比如:OpenID,Passport,SpaceCard等都还不错,但是要么就是收费的(passport),要么就是有点用不习惯(...

21650
来自专栏杨建荣的学习笔记

曲折的10g,11g中EM的安装配置过程(r4笔记第98天)

今天在本地搭了一套oracle环境,首先安装数据库的时候顺带了EM,结果安装好之后想修改监听器的端口,把原本15521的端口换成别的,结果在目录中修改了几个参数...

28930
来自专栏蓝天

C/C++编程可用的Linux自带工具

GNU Binary Utilities或binutils是一整套的编程语言工具程序,用来处理许多格式的目标文件。当前的版本原本由在Cygnus Soluti...

14720
来自专栏喵了个咪的博客空间

[喵咪大数据]Hadoop节点添加下线和磁盘扩容操作

Hadoop绝非一个简单程序,集群模式下更是如此,所有的数据都存储在Hadoop中如果操作不当会存在丢失数据的风险,那么怎么在安全的情况,扩容下线维护或者磁盘满...

53240
来自专栏黑泽君的专栏

网络通信的三要素

73450
来自专栏大魏分享(微信公众号:david-share)

Openshift 3.11的14大新功能详解

聂健是大魏的红帽同事,本文已获得授权转载,欢迎读者阅读他的技术blog:https://www.cnblogs.com/ericnie/

1.6K30
来自专栏晨星先生的自留地

实战系列之你真的会mysql注入么?

22350
来自专栏大学生计算机视觉学习DeepLearning

2018最新win10 安装tensorflow1.4(GPU/CPU)+cuda8.0+cudnn8.0-v6 + keras 安装CUDA莫名失败 导入tensorflow失败报错问题解决

原文链接:https://www.cnblogs.com/DOMLX/p/9747019.html

65120
来自专栏信安之路

RedTeam 技巧集合

1、利用目标用户使用的 user agent 来隐藏自身的恶意流量,比如像 Outlook 软件的 UA。

16020

扫码关注云+社区

领取腾讯云代金券