Solaris SMF Services - метод "старт" завершен со статусом 96
Привет, я пытаюсь запустить новую службу при перезагрузке сервера, и я получил эту ошибку при запуске: "Метод" запуск "выход со статусом 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
Любая помощь может быть отличной.
3 ответа
Проблема оказалась в том, что мой сервис был вызван слишком рано и не мог запуститься раньше других сервисов. Чтобы исправить это, я добавил зависимость от одного из последних запущенных сервисов - это может быть, например, rlogin, ssh и т. Д.
Вот код, который я добавил в.xml:
<dependency name='login'
grouping='require_all'
restart_on='none'
type='service'>
<service_fmri value='svc:/network/login:rlogin' />
Является /users
символическая ссылка куда-то еще? Каталоги находятся под /users
автомонтироваться? Делать разрешения на /users
сам мешай пользователю adm0ardp видеть/users/adm0ardp
? Сообщение об ошибке говорит, что каталог не существует. Я бы использовал truss или dtrace и наблюдал за процессом svc.startd и смотрел, что происходит, когда вы выполняете svcadm enable
,
Ошибка показывает, что CD / CHDIR не удалось. Правильно ли указан и записан пользователь adm0ardp и может ли он перейти в /users/adm0ardp?