こんにちは私はサーバーの再起動時に新しいサービスを開始しようとしていますが、開始時に次のエラーが発生しました:「メソッド "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つへの依存関係を追加しました。これは、たとえば、rlogin、sshなどです。
.xmlに追加したコードは次のとおりです。
<dependency name='login'
grouping='require_all'
restart_on='none'
type='service'>
<service_fmri value='svc:/network/login:rlogin' />
エラーは、cd/chdirが失敗したことを示しています。ユーザーadm0ardpは正しく指定(およびスペル)されており、/ users/adm0ardpに挿入できますか?
/users
は他の場所へのシンボリックリンクですか? /users
の下のディレクトリは自動マウントされていますか? /users
自体の権限により、ユーザーadm0ardpが/users/adm0ardp
を表示できなくなりますか?エラーメッセージは、ディレクトリが存在しないことを示しています。 trussまたはdtraceを使用して、svc.startdプロセスを監視し、svcadm enable
を実行すると何が起こっているかを確認します。