本列中refresh方法执行变量exec被设为“:kill -8,通过kill命令向服务发送SIGUSR1信号。与myapp.c中read_config()逻辑相对应,manifest文件中创建了 myapp属性组(property group)。它包含一个名为log_filename的字符型属性,初始值设为/tmp/myapp.log。有关manifest文件编写详细信息,请参看Solaris Service Management Facility - Service Developer Introduction。
至此,使用libscf.so实现服务refresh方法的所有工作全部完成。下节中讲述如何将把myapp部署为SMF服务并作简单测试。
部署和测试部署
管理和修改SMF服务分别需要solaris.smf.manage和solaris.smf.modify权限,具体请参看 smf_security(5)。缺省只有root有此权限,可使用root部署SMF服务。如果使用普通用户账号,则需要root将solaris.smf.manage和 solaris.smf.modify权限赋予相关用户。方法是在/etc/user_attr文件中加入授权记录。比如为用户hunter加入SMF管理和修改权限,则/etc/user_attr显示如下,其中粗斜体部分为hunter所需的权限。
# cat /etc/user_attr
#
# Copyright (c) 2003 by Sun Microsystems, Inc. All rights reserved.
#
# /etc/user_attr
#
# user attributes. see user_attr(4)
#
#pragma ident "@(#)user_attr 1.1 03/07/09 SMI"
#
adm::::profiles=Log Management
lp::::profiles=Printer Management
root::::auths=solaris.*,solaris.grant;profiles=Web Console Management,All;lock_after_retrIEs=no
hunter::::auths=solaris.smf.manage,solaris.smf.modify
假设本例中开发目录和所有文件都位于/export/home/smfdemo目录下,则将本例部署为SMF服务的步骤如下:
标签: