我使用SMF来管理Solaris10下的服务。
该服务本身就是一个流程管理器,它将许多子进程分叉,其中一些进程偶尔会死掉(或由于各种原因而被杀死)。但是,服务流程本身是非常健壮的,并且永不消亡。
我遇到的问题是,当我使用杀死信号手动杀死其中一个子进程时,SMF将重新启动主服务:
[ Aug 27 08:07:06 Stopping because process received fatal signal from outside the service. ]
是否有一种方法可以配置SMF或服务清单,以便如果服务子进程中的某个进程被杀死,SMF将不会关闭服务?
提亚
发布于 2010-08-27 04:41:20
您需要在清单中设置以下内容:
<property_group name='startd' type='framework'>
<!-- sub-process core dumps shouldn't restart session -->
<propval name='ignore_error' type='astring' value='core,signal' />
</property_group>或者你可以随心所欲地:
svccfg -s svc:/your/service:default
svccfg> setprop startd/ignore_error = astring:"core,signal"
svccfg> ^D发布于 2013-03-29 09:49:52
我刚才也遇到了同样的问题,并且能够通过更改服务流程本身来启动封装在/usr/sbin/ctrun -l child <command-and-arguments>中的子程序来解决这个问题。清单本身使用“子”服务模型。
详细信息请参见contract(4)和ctrun(1)。
发布于 2013-12-02 18:35:52
如果您尝试进行动态方法,并获得没有这样的属性组'startd‘,您需要首先添加该属性。
svccfg -s svc:/your/service:default
svccfg> addpg startd framework
svccfg> setprop startd/ignore_error = astring:"core,signal"
svccfg> ^Dhttps://serverfault.com/questions/175008
复制相似问题