Назад | Перейти на главную страницу

Solaris SMF Services - метод «start» завершен со статусом 96

Привет, я пытаюсь запустить новую службу при перезагрузке сервера, и при запуске у меня возникает эта ошибка: «Метод« start »завершился со статусом 96». Также моя услуга в состоянии «Техническое обслуживание».

Моя служба работает, когда я ее выключаю / включаю, но не при перезапуске (что является целью).

Я погуглил следующие ошибки и не смог понять, в чем проблема:

Журнал ошибок:

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

Любая помощь может быть отличной.

Является /users символическая ссылка на другое место? Каталоги под /users автоматическая установка? Сделайте разрешения на /users сам мешает пользователю adm0ardp увидеть /users/adm0ardp? В сообщении об ошибке говорится, что каталог не существует. Я бы использовал truss или dtrace и смотрел svc.startd обрабатывать и смотреть, что происходит, когда вы выполняете svcadm enable.

Ошибка показывает, что cd / chdir не удалось. Правильно ли указан (и написан) пользователь adm0ardp и может ли он перейти в / users / adm0ardp?

Проблема оказалась в том, что моя служба была вызвана слишком рано и не могла запуститься раньше других служб. Чтобы исправить это, я добавил зависимость от одной из последних запущенных служб - это может быть, например, rlogin, ssh и т. Д.

Вот код, который я добавил в .xml:

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