Solaris SMF 服务 - 方法“start”以状态 96 退出

Solaris SMF 服务 - 方法“start”以状态 96 退出

您好,我尝试在服务器重启时启动一项新服务,但在启动时收到此错误:“方法“启动”以状态 96 退出”。此外,我的服务处于“维护”状态。

当我禁用/启用它时,我的服务正在运行,但当我重新启动时则无法运行(这是目标)。

我用 Google 搜索了以下错误,但无法找出问题所在:

错误日志:

svc.startd could not set context for method: chdir: Ce fichier ou ce répertoire n'existe pas

Method "start" exited with status 96 

我的.xml:

<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">

<service_bundle type='manifest' name='broker2'>

<service
    name="application/broker2"
    type="service"
    version="1">
<instance name='default' enabled='true'>

    <exec_method
          type='method'
          name='start'
          exec='/lib/svc/method/svc-broker start'
          timeout_seconds='30' >

        <method_context working_directory='/users/adm0ardp'>
            <method_credential user='adm0ardp' group='gpm0ardp' />
        </method_context>
    </exec_method>

    <exec_method
           type='method'
           name='stop'
           exec='/lib/svc/method/svc-broker stop'
           timeout_seconds='3' >

        <method_context working_directory='/users/adm0ardp'>
            <method_credential user='adm0ardp' group='gpm0ardp' />
        </method_context>
     </exec_method>

</instance>             

</service>
</service_bundle>

和我的脚本:

#!/usr/bin/sh

. /lib/svc/share/smf_include.sh

case "$1" in
  start) script_path.ksh 
;;
  stop) script_path.ksh   
;;

esac 
exit 0

任何帮助都将非常有帮助。

答案1

错误显示 cd/chdir 失败。用户 adm0ardp 是否指定正确(拼写正确)并且能够 cd 到 /users/adm0ardp?

答案2

符号链接指向其他地方吗/users? 目录是否/users自动挂载? 其自身的权限是否/users阻止用户adm0ardp看看/users/adm0ardp?错误消息确实表明目录不存在。我会使用 truss 或 dtrace 并观察启动进程并查看执行时发生的情况svcadm enable

答案3

问题原来是我的服务调用得太早,无法在其他服务之前启动。为了解决这个问题,我添加了对最后启动的服务之一的依赖——例如,这可能是 rlogin、ssh 等。

这是我在 .xml 中添加的代码:

<dependency name='login'
grouping='require_all' 
restart_on='none'      
type='service'>
<service_fmri value='svc:/network/login:rlogin' />

相关内容