使用libscf.so实现smf服务refresh方法

使用libscf.so实现smf服务refresh方法

ID:20584412

大小:99.50 KB

页数:12页

时间:2018-10-13

使用libscf.so实现smf服务refresh方法_第1页
使用libscf.so实现smf服务refresh方法_第2页
使用libscf.so实现smf服务refresh方法_第3页
使用libscf.so实现smf服务refresh方法_第4页
使用libscf.so实现smf服务refresh方法_第5页
资源描述:

《使用libscf.so实现smf服务refresh方法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、使用libscf.so实现SMF服务refresh方法  Solaris10的SMF机制向系统管理员提供了统一的服务管理平台,利用它可方便地对所辖服务进行配置和管理,还可以在必要的时候自动重启服务。SMF的配置功能不但可让系统管理员在服务下线的状态下通过svccfg(1M)配置服务属性,还可以在服务联机的状态下结合使用svcadmrefresh命令,动态配置和启用最新属性。另外,SMF还提供编程接口API(包含在libscf.so库中),利用它可以取代用户的配置文件以及相应的配置读取解析逻辑,享受专业级配置工具svccfg(1M)带来的便利。本文将结合一个例子讲

2、述如何在应用程序中使用libscf.so所提供的部分API实现SMF服务refresh方法。  服务配置概述  对于大部分服务类应用而言,为了适应运行环境的多变性,一般都会在服务程序中编写配置读取模块,在服务启动时通过读取配置来决定如何提供服务。比如,一个典型的网络服务可能在服务启动时通过读取配置文件决定网络服务端口、服务日志路径等。配置的存在形式有多种,比如配置文件、数据库记录,甚至简单到使用操作系统环境变量等。无论配置采用何种形式存在,为了能获取配置值,服务程序需要自行实现相应的配置读取和解析逻辑。  除了在服务启动时需要读取配置外,有些行业领域要求服务应用

3、可在服务运行过程中具有动态采用新配置的功能。这就要求开发人员编写更复杂的逻辑以保证服务进程在运行过程中可在适当的时机,重新读取配置并采用新配置,同时又必须保证新配置的采用过程不会导致服务进程不稳定甚至崩溃。动态读取配置的时机可有多种方式,较简单的方法比如,通过向服务进程发送某个特定信号,服务进程接到信号后重新读取配置,然后根据新配置设置服务环境并继续提供服务。  SMF框架对服务配置的支持  在SMF中,配置被称为属性(property),配置值称为属性值(propertyvalue)。利用svccfg(1M)工具可以设置服务的属性和属性值。服务配置缺省保存在S

4、MF全局资源库/etc/svc/repository.db中。SMF的svc.configd进程负责存取资源库。当其他SMF进程或工具需要配置信息时,可以通过连接svc.configd进程从资源库中获取配置,同样也通过svc.configd将配置存入资源库。用户服务程序也可以通过使用libscf.so提供的API与svc.configd进程相连接,从资源库中存取服务配置。  配置SMF服务最简单的方式是使用svccfg(1M)工具。svccfg(1M)工具是一个交互式的配置修改工具,它包含许多简单实用的命令(具体命令可以在进入svccfg后使用help查询)。比

5、如常用命令有:  import命令可将以xml格式定义的用户服务加载为SMF服务并启动运行。  delete命令可以删除用户服务。  list和select命令可以查看和选取系统中现有的服务。  listprop、editprop、setprop、delprop命令可以查看和修改当前服务的配置属性。  另外,SMF还支持配置快照(snapshot)功能,通过它可以保留服务在某一时刻的属性配置,并在需要的时候可通过revert将当前配置恢复为某一时刻的快照配置。快照相关的命令包括listsnap,selectsnap和revert。  无论采用何种方式修改了当前服

6、务的配置,这些修改只影响到资源库而非正在运行的服务进程。如果要求当前服务能够马上应用新配置,则用户在退出svccfg(1M)工具后需要使用svcadmrefresh命令指示相关服务重新读取配置并采用新配置。  在SMF框架中,start和stop方法是服务必须提供的,这是由于SMF需要调用start和stop方法来启动和停止相应的服务。而refresh方法则不是必要的,前提是用户服务不需要动态刷新启用新配置属性。如果用户服务需要动态刷新配置属性,则用户服务在定义时,必须提供服务refresh方法,而相应服务程序也必须实现适时重新读取配置的逻辑。  使用libsc

7、f.so的API实现refresh方法  正如前文提到的,配置有多种存在形式,不同存在形式读取方法也不同。另外,实现SMF的refresh方法也有多种方式,比如通过信号(singal)通知服务进程读取最新配置就是一种简单实用的方法。本节下文将结合一个例子讲述如何利用libscf.so提供的API读取保存在SMF全局资源库中的配置,并通过信号方式通知服务进程重新读取配置,从而实现SMF所需的refresh方法。  服务程序  表1是一个简单的程序myapp.c,它运行后将成为后台守护进程存在于系统中,并每间隔5秒钟向日志文件插入一行记录以报告自己的存在。虽然它实际

8、上不向外提供任何服务,但

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。