web-dev-qa-db-ja.com

SolarisSMFサービス-メソッド「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

どんな助けでも素晴らしいかもしれません。

1
ciwol

問題は、私のサービスの呼び出しが早すぎて、他のサービスの前に開始できなかったことが判明しました。これを修正するために、最後に開始したサービスの1つへの依存関係を追加しました。これは、たとえば、rlogin、sshなどです。

.xmlに追加したコードは次のとおりです。

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

エラーは、cd/chdirが失敗したことを示しています。ユーザーadm0ardpは正しく指定(およびスペル)されており、/ users/adm0ardpに挿入できますか?

0
ramruma

/usersは他の場所へのシンボリックリンクですか? /usersの下のディレクトリは自動マウントされていますか? /users自体の権限により、ユーザーadm0ardp/users/adm0ardpを表示できなくなりますか?エラーメッセージは、ディレクトリが存在しないことを示しています。 trussまたはdtraceを使用して、svc.startdプロセスを監視し、svcadm enableを実行すると何が起こっているかを確認します。

0
mghocke