首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux(Centos7.4和RHEL7.4)环境下基于chrony的NTP服务器的构建

Linux(Centos7.4和RHEL7.4)环境下基于chrony的NTP服务器的构建

作者头像
耕耘实录
发布于 2018-12-20 06:46:37
发布于 2018-12-20 06:46:37
1.3K00
代码可运行
举报
文章被收录于专栏:耕耘实录耕耘实录
运行总次数:0
代码可运行

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

一、操作环境

操作系统:CentOS Linux release 7.4.1708 (Core) 最小化安装版 chrony版本:chrony-3.1-2.x86_64

二、配置过程

由于在CentOS7.4系统中以默认安装chrony,因此无需再执行安装过程。其他未安装chrony的操作系统要执行安装chrony也是极其简单的,以CentOS7以下没有自带chrony的操作系统版本为例,执行yum -y install chrony一键即可完成chrony的安装。 1、检查服务状态。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@Geeklp-Chrony ~]# systemctl status chronyd
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since 五 2018-01-12 10:20:17 CST; 1h 26min ago

从以上信息中我们可以看到,chrony服务已经启动,默认开机启动,厂商预置状态为开机启动。 2、配置防火墙

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@Geeklp-Chrony ~]# firewall-cmd --permanent --add-service=ntp
success
[root@Geeklp-Chrony ~]# firewall-cmd --reload
success

3、测试。 本次测试使用的客户端IP为:10.1.1.23,客户端同样安装的是chrony软件。 (1)将客户端chronyd的配置文件中以下几行注释了,并在后面新增一行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 10.1.1.21 iburst

(2)将客户时间修改为错误时间。 [root@JDK-Tomcat ~]# date -s 18:23:12 (3)重启客户端chrony。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@JDK-Tomcat ~]# systemctl restart chronyd

(4)查看客户端时间同步情况。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@JDK-Tomcat ~]# date
20180112日 星期五 19:39:37 CST

结果与服务器时间一致,配置成功。测试完毕。 4、chrony也支持ntpdate,我们现在来卸载客户端上的chrony,然后使用ntpdate尝试同步。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@JDK-Tomcat ~]# yum -y remove chronyd
[root@JDK-Tomcat ~]# yum -y install ntpdate
[root@JDK-Tomcat ~]# ntpdate 10.1.1.21
12 Jan 19:41:49 ntpdate[3407]: step time server 10.1.1.21 offset 4702.851108 sec

以上效果也是很明显的。我们也可以使用定时任务来同步时间,关于定时任务设置,此处不再赘述。

三、高级设置

chrony是ntp协议的另外一种实现,关于chrony与ntp的对比我们可以参考文末参考资料。一般情况下,建议使用chrony代替ntp。 1、关于chronyc。chronyc支持命令行模式与交互式模式。我们来看一下帮助文档。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
System clock:               
tracking                    Display system time information
makestep                    Correct clock by stepping immediately
makestep <threshold> <updates>
                            Configure automatic clock stepping
maxupdateskew <skew>        Modify maximum valid skew to update frequency
waitsync [<max-tries> [<max-correction> [<max-skew> [<interval>]]]]
                            Wait until synchronised in specified limits

Time sources:               
sources [-v]                Display information about current sources
sourcestats [-v]            Display statistics about collected measurements
reselect                    Force reselecting synchronisation source
reselectdist <dist>         Modify reselection distance

NTP sources:                
activity                    Check how many NTP sources are online/offline
ntpdata [<address>]         Display information about last valid measurement
add server <address> [options]
                            Add new NTP server
add peer <address> [options]
                            Add new NTP peer
delete <address>            Remove server or peer
burst <n-good>/<n-max> [<mask>/<address>]
                            Start rapid set of measurements
maxdelay <address> <delay>  Modify maximum valid sample delay
maxdelayratio <address> <ratio>
                            Modify maximum valid delay/minimum ratio
maxdelaydevratio <address> <ratio>
                            Modify maximum valid delay/deviation ratio
minpoll <address> <poll>    Modify minimum polling interval
maxpoll <address> <poll>    Modify maximum polling interval
minstratum <address> <stratum>
                            Modify minimum stratum
offline [<mask>/<address>]  Set sources in subnet to offline status
online [<mask>/<address>]   Set sources in subnet to online status
polltarget <address> <target>
                            Modify poll target
refresh                     Refresh IP addresses

Manual time input:          
manual off|on|reset         Disable/enable/reset settime command
manual list                 Show previous settime entries
manual delete <index>       Delete previous settime entry
settime <time>              Set daemon time
                            (e.g. Sep 25, 2015 16:30:05 or 16:30:05)

NTP access:                 
accheck <address>           Check whether address is allowed
clients                     Report on clients that have accessed the server
serverstats                 Display statistics of the server
allow [<subnet>]            Allow access to subnet as a default
allow all [<subnet>]        Allow access to subnet and all children
deny [<subnet>]             Deny access to subnet as a default
deny all [<subnet>]         Deny access to subnet and all children
local [options]             Serve time even when not synchronised
local off                   Don't serve time when not synchronised
smoothtime reset|activate   Reset/activate time smoothing
smoothing                   Display current time smoothing state

Monitoring access:          
cmdaccheck <address>        Check whether address is allowed
cmdallow [<subnet>]         Allow access to subnet as a default
cmdallow all [<subnet>]     Allow access to subnet and all children
cmddeny [<subnet>]          Deny access to subnet as a default
cmddeny all [<subnet>]      Deny access to subnet and all children

Real-time clock:            
rtcdata                     Print current RTC performance parameters
trimrtc                     Correct RTC relative to system clock
writertc                    Save RTC performance parameters to file

Other daemon commands:      
cyclelogs                   Close and re-open log files
dump                        Dump all measurements to save files
rekey                       Re-read keys from key file

Client commands:            
dns -n|+n                   Disable/enable resolving IP addresses to hostnames
dns -4|-6|-46               Resolve hostnames only to IPv4/IPv6/both addresses
timeout <milliseconds>      Set initial response timeout
retries <retries>           Set maximum number of retries
keygen [<id> [<type> [<bits>]]]
                            Generate key for key file
exit|quit                   Leave the program
help                        Generate this help

以上命令在交互模式中支持自动补全哦,十分方便。让我们来实践一下吧。 (1)查看时间同步源。在命令行中输入chronyc进入交互模式。

怎么样?是不是比ntpq中显示的要直观得多。图中展示了一些命令补全的效果。 (2)查看时间同步状态。

2、关于chrony。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@Geeklp-Chrony ~]# man  chrony.conf

(3)关于chronyd。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@Geeklp-Chrony ~]# man  chronyd

(4)最重要的chronyc。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@Geeklp-Chrony ~]# man  chronyc
参考资料:

https://chrony.tuxfamily.org/doc/3.1/chrony.conf.html https://chrony.tuxfamily.org/doc/3.2/chronyd.html https://chrony.tuxfamily.org/doc/3.2/chronyc.html https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-using_chrony

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年01月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
iOS开发:Block传值的运用
首先再来了解一下Block,简单一点说,Block就是一段匿名的代码块,是具有某种功能的代码块。那么接下来通过实际应用场景,来直观的演示一下用Block传值的操作,具体如下所示。
三掌柜
2021/12/02
9360
iOS开发:Block传值的运用
iOS开发之UITableView联动实现城市选择器
在 iOS开发之城市选择器一文中用两列的UIPickerView实现了城市选择器,今天用两个UITableView来实现一下,首先这种联动在很多地方用得上,而且方法有好几种,我这里选择了个人喜欢的一种方式:弄两个UITableView,让当前控制器管理。这种方式总体思路如下: 1、添加两个UITableView到当前控制器中,分别设置它们的的尺寸,然后拖线到控制器中 2、左边的表格设置数据源和代理为当前控制器,然后显示数据,右边的表格也设置数据源为当前控制器,然后显示数据操作。 3、监听左边表格控制器
YungFan
2018/05/03
2.4K0
iOS开发之UITableView联动实现城市选择器
常用代码/Code
1、Alert - (void)showAlert{ UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"确定要这样做么" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" styl
Helloted
2022/06/07
4030
iOS-UI控件之UITableView(一)
UITableView 介绍 UITableView 是用来用列表的形式显示数据的UI控件 举例 QQ好友列表 通讯录 iPhone设置列表 tableView 常见属性 // 设置每一行cell的高度 self.tableView.rowHeight = 100; // 设置每一组头部的高度 self.tableView.sectionHeaderHeight = 50; // 设置每一组尾部的高度 // self.tableView.secti
用户1941540
2018/05/11
2K0
iOS开发——UITableView勾选效果
如今的APP开发中,UITableView是最常用的控件之一,而UITableView中有个很常见的效果就是勾选效果,这个效果是由UITableViewCell中的accessoryType属性来决定的。
Originalee
2018/08/30
1.9K0
ios5开发-UITableView开启编辑功能
该例子添加UITableView编辑功能 具体功能如下 功能很简单但很实用  @implementation AppDelegate @synthesize window = _window; @s
阿新
2018/04/12
8460
ios5开发-UITableView开启编辑功能
开发体育赛事直播系统:实现聊天交友的私聊功能技术实现全方案解析
基于“东莞梦幻网络科技”体育赛事直播系统,展示前后端技术(PHP ThinkPHP + Vue.js + Android Java + iOS OC)实现的“用户与用户之间私聊”完整方案,包括功能描述、界面效果、技术实现、数据结构、接口设计及关键代码示例。
用户10027718
2025/04/08
2860
开发体育赛事直播系统:实现聊天交友的私聊功能技术实现全方案解析
iOS开发-搜索栏UISearchBar和UISearchController
最近项目中用到了搜索栏,所以在网上搜了一些相关的资料学习了一下,现在记录一下,iOS中的搜索栏实现起来相对简单一点,网上也有很多参考资料,不过靠谱的不是很多,很多都是iOS 8.0之前的实现,iOS 8.0上的实现貌似很少看到,看了一些其他人的代码,使用了一下UISearchController感觉还是非常不错的。好了不多说了 ,来点干货吧。 1 UISearchBar和UIDisplayController实现搜索 是网上最常见的也算是最简单的,也有使用Searh Bar Search Displa
roc
2018/03/30
2.6K0
iOS开发-搜索栏UISearchBar和UISearchController
IOS开发之新浪围脖
  IOS开发和Web开发一样,网络请求方式包括Get和Post方式。Get和Post两者有和特点和区别,在本篇博客中不做过多的论述,本篇的重点在于如何GET数据和POST数据。下面还会提到如何在我们的项目中使用CocoaPods, CocoaPods的安装和使用教程请参考链接http://code4app.com/article/cocoapods-install-usage。上面详细的介绍了CocoaPods的安装过程和如何通过CocoaPods引入第三方类库。在本篇博客中提到CocoaPods,是因为
lizelu
2018/01/11
1.4K0
IOS开发之新浪围脖
iOS_11_tableViewCell使用alertView变更数据
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117667.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/05
5740
iOS_11_tableViewCell使用alertView变更数据
iOS开发-UITableViewCell的创建方式
被static修饰的成员变量,全局只有一份内存 static的后面只可以放一个定值,这是在编译阶段就确定的
孙寅
2020/06/02
1.4K0
iOS开发UI篇--一个可扩展性极强的树形控件
树形控件在多列列表、多级菜单中使用比较常见,比如:国家-省份-城市 多级选择、学校-专业-班级 多级选择等等。然而IOS自带控件中并不存在树形控件,我们要在IOS开发中使用树形控件,通常需要自己扩展UITableView列表控件。 现在在这里开源一个自己写的高扩展性,高复用性的IOS树形结构控件。 支持无限极树形结构。 使用的是非递归方式。 代码简单易懂,扩展方便。 图片演示如下:
楚阳
2018/11/24
1.4K0
iOS开发UI篇--一个可扩展性极强的树形控件
史上最全的iOS之访问自定义cell的textField.text的N种方法
问题背景:自定义cell中有一个UITextField类型的子控件。我们经常要在tableView中拿到某个cell内textField的文本内容进行一些操作。比如某些app的注册界面就是以tableView的形式存在的,注册时往往需要注册姓名、昵称、邮箱、地址、联系方式等信息。然后点击注册或者提交,这些信息就会被提交到远程服务器。有人说,注册页面就那么固定的几行cell,没必要搞得那么复杂,完全可以用静态cell实现。但还有一些情况,当前页面的tableView的cell的行数是不确定的(比如当前页面显示多好行cell由上一个页面决定或者由用户决定),这种情况下不太适合使用静态cell。也不能够通过分支语句的方式一一枚举出各个case。所以需要一中通用的动态的方法。那么我们怎么在tableView中准确的拿到每一行cell中textField的text呢?以下我将要分四个方法分别介绍并逐一介绍他们的优缺点,大家可以在开发中根据实际情况有选择的采用不同的方法。 如下图,就是我之前开发的一个app中用xib描述的一个cell,当用户点击“注册”或者“提交”button时候,我需要在控制器中拿到诸如“法人姓名”这一类的信息:
VV木公子
2018/06/05
7.2K0
史上最全的iOS之访问自定义cell的textField.text的N种方法
Swift 学习Using Swift mix and match, network: 写rss读者
4. need a feed manager: FeedManager.swift
全栈程序员站长
2022/07/06
1.4K0
iOS - 开发1年后对MVC新的理解
问题来了回到工程项目需求,每个cell都有增加减少按钮 而且需要有选中效果在View层.意味着MVC架构模式中 我在View层对Model进行了修改.
Wilbur-L
2022/03/10
1.3K1
【IOS开发基础系列】Table View开发专题
    A table view is an instance of theUITableView class in one of two basic styles, plain or grouped. A plain table view is an unbroken list; a grouped table view has visually distinct sections. A table view has a data source and might have a delegate. The data source object provides the data for populating the sections and rows of the table view. The delegate object customizes its appearance and behavior.
江中散人_Jun
2023/10/16
8730
【IOS开发基础系列】Table View开发专题
【iOS7一些总结】9、与列表显示(在):列表显示UITableView
列表显示,顾名思义它是在一个列表视图的形式显示在屏幕上的数据的内容。于ios在列表视图UITableView达到。这个类在实际应用中频繁,是很easy理解。这里将UITableView的主要使用方法总结一下以备查。
全栈程序员站长
2022/07/06
2.5K0
【iOS7一些总结】9、与列表显示(在):列表显示UITableView
【IOS开发基础系列】Storyboard专题
        如果你的 app 有大量的窗口,故事板能帮你减少许多用于从一个窗口转到另一个窗口的导航代码。与每个viewcontroller一个单独的 nib 文件不同,你的 app 只需用一个故事板文件(其中可以包含所有的viewcontroller 以及它们之间的关系)即可。
江中散人_Jun
2023/10/16
2.3K0
【IOS开发基础系列】Storyboard专题
iOS 二级菜单(UITableView实现)「建议收藏」
首先建立一个cell的类,用于存放cell中的内容 ,继承自uitableviewcell;
全栈程序员站长
2022/06/27
1.4K0
在iOS中怎样创建可展开的Table View?(下)
我猜这部分可能是你最期望的了,因为本次教程的目标将会在在部分实现.第一次我们设法让顶层的cell,在它们点击的时候展开或者合拢.以及显示或者隐藏合适的子cell.
hrscy
2018/08/30
1.9K0
在iOS中怎样创建可展开的Table View?(下)
推荐阅读
相关推荐
iOS开发:Block传值的运用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档