我知道Solaris SMF 因子进程死亡而终止服务。我的问题如下:我希望 SMF 忽略我服务子进程的任何崩溃转储(段错误)。我以为可以通过将其添加到我的 svc.xml 并执行 svcadm 刷新和重启来实现这一点
<property_group name='startd' type='framework'>
<propval name='ignore_error' type='astring'
value='core,signal' />
</property_group>
现在我在 application-mysvc:default.log 中看到以下内容(问题以评论形式内联)
[ Feb 15 10:19:56 Enabled. ]
[ Feb 15 10:19:56 Executing start method ("/lib/svc/method/mysvc start") ]
tee: /dev/msglog: Permission denied
Started mysvc for server xxx
[ Feb 15 10:19:57 Method "start" exited with status 0 ]
为什么 SMF 停止 mysvc - 核心转储位于子进程中 - 上述配置尚未生效?
[ Feb 15 10:26:41 Stopping because process dumped core. ]
[ Feb 15 10:26:41 Executing stop method (:kill) ]
这是某种自动重启行为吗?
[ Feb 15 10:26:58 Executing start method ("/lib/svc/method/mysvc start") ]
tee: /dev/msglog: Permission denied
Started mysvc for server xxx
[ Feb 15 10:26:58 Method "start" exited with status 0 ]
谁/什么禁用了该服务?
[ Feb 15 10:30:30 Stopping because service disabled. ]
[ Feb 15 10:30:31 Executing stop method (:kill) ]
我发帖于光传送网但尚未得到回复。
另外,我无法让 listprop 或 svcprop 显示我的 startd ignore_error
答案1
清单文件不是您服务的规范配置。在旧版本中,清单文件在最初导入后根本不使用。最近,清单文件在启动时被读取以配置所有服务。在当今的任何系统上,更改清单都不会立即生效,即使使用 svccfg 刷新也是如此。
您可能只需要再次“svccfg import”清单。您也可以使用 svccfg 直接修改属性,然后刷新它。