Go to main content
Oracle® Solaris 11.3 でのシステムサービスの管理

印刷ビューの終了

更新: 2016 年 11 月
 
 

サービス依存関係の表示

依存関係は、サービスインスタンスの状態遷移を制御します。依存関係の高度な説明については、サービス依存関係を参照してください。詳細な説明と、さまざまな種類の依存関係を指定する方法については、Oracle Solaris 11.3 でのシステムサービスの開発を参照してください。

次の図では、svc1:defaultsvc2:default、および svc3:default のサービスインスタンスは、起動するために、ほかのサービスまたはファイルなどのリソースを必要としていません。これらのインスタンスは、ほかのリソースを待機することなく、並列して起動し、それぞれの起動メソッドを実行し、オンライン状態に移行できます。svc4:default インスタンスは、svc2:default インスタンスがオンラインになるまで、その起動メソッドを実行できません。svc5:inst1 インスタンスには、svc2:default リソースと svc4:default リソースの両方が必要です。svc5:inst1svc4:default に対する依存関係はオプションの依存関係であり、svc4:default が有効かつオンライン、無効、または存在していないという状態のいずれかになっている場合に充足されます。svc5:inst1 インスタンスは、svc2:default がオンラインになるまで待機する必要があります。svc4:default が存在し有効である場合は、svc5:inst1svc4:default もオンラインになるまで待機する必要があります。svc4:default が存在し無効であったり、存在していない場合は、svc5:inst1svc4:default を待機する必要はありません。

図 2  サービス依存関係

image:図では、サービスおよびサービスインスタンス間の依存関係の例を示します。

依存関係のグループ

各依存関係は、次のいずれかのグループに割り当てられます。グループは、そのグループ内の依存関係が充足される条件を定義します。

require_all

次の両方の条件を満たしている場合、この依存関係は充足します。

  • このグループ内のすべてのサービス依存関係が実行している (online または degraded)。

  • このグループ内のすべてのファイル依存関係が存在している。

require_any

次のどちらかの条件を満たしている場合、この依存関係は充足します。

  • このグループ内のサービス依存関係の少なくとも 1 つが実行している (online または degraded)。

  • このグループ内のファイル依存関係の少なくとも 1 つが存在している。

optional_all

このグループ内のすべてのサービス依存関係がすべて次のどちらかの条件を満たしている場合、この依存関係は充足します。

  • サービスが実行している (online または degraded)。

  • サービスの実行に管理アクションが必要である。サービスは、存在していない、不完全である、disabled 状態である、maintenance 状態である、または offline 状態であり、起動には管理アクションが必要な依存関係を待機している。

このグループ内のファイル依存関係は存在していても、存在していなくても構いません。

サービスインスタンスが遷移中であり、起動に管理者の操作は不要である場合、この依存関係は充足されません。この場合、依存サービスは、この依存関係が起動するまで待機するか、管理アクションなしに依存関係を起動できないと判断するまで待機します。

exclude_all

次の両方の条件を満たしている場合、この依存関係は充足します。

  • このグループ内のすべてのサービス依存関係が、disabled 状態であるか、maintenance 状態であるか、または存在していない。

  • このグループ内のすべてのファイル依存関係が存在していない。

サービスが依存するインスタンスの一覧表示

svcs -d コマンドは、特定のサービスが依存するサービスインスタンスを一覧表示します。

この例では、system-repository サービスが依存するサービスインスタンスを表示します。

$ svcs -d system-repository
STATE          STIME    FMRI
online         Sep_09   svc:/milestone/network:default
online         Sep_09   svc:/system/filesystem/local:default
online         Sep_09   svc:/system/filesystem/autofs:default

svcs -l コマンドは、特定のサービスが依存するサービスも一覧表示します。-l オプションの出力では、依存関係の名前と状態に加え、依存関係のタイプ (つまりグループ) と、依存関係の restart_on プロパティーの値も表示されます。この例では、依存関係のうち 2 つが必須で、1 つがオプションです。これらのグループ内の依存関係が依存サービスに与える影響の詳細は、依存関係のグループを参照してください。依存関係の restart_on プロパティーのさまざまな値が依存サービスに与える影響の詳細は、依存関係のグループを参照してください。

$ svcs -l system-repository
fmri         svc:/application/pkg/system-repository:default
name         IPS System Repository
enabled      false
state        disabled
next_state   none
state_time   Mon Sep 09 18:42:28 2013
restarter    svc:/system/svc/restarter:default
manifest     /lib/svc/manifest/application/pkg/pkg-system-repository.xml
dependency   require_all/error svc:/milestone/network:default (online)
dependency   require_all/none svc:/system/filesystem/local:default (online)
dependency   optional_all/error svc:/system/filesystem/autofs:default (online)

svcprop コマンドを使用して、これらの依存関係を一覧表示することもできます。この形式では、依存関係のグループと restart_on 値は別々の行に表示され、依存関係の状態は表示されません。

$ svcprop -g dependency system-repository:default
network/entities fmri svc:/milestone/network:default
network/grouping astring require_all
network/restart_on astring error
network/type astring service
filesystem-local/entities fmri svc:/system/filesystem/local:default
filesystem-local/grouping astring require_all
filesystem-local/restart_on astring none
filesystem-local/type astring service
autofs/entities fmri svc:/system/filesystem/autofs:default
autofs/grouping astring optional_all
autofs/restart_on astring error
autofs/type astring service

サービスに依存するインスタンスの一覧表示

svcs -D コマンドは、特定のサービスに依存するサービスインスタンスを一覧表示します。

この例では、system-repository サービスに依存するサービスインスタンスを表示します。

$ svcs -D system-repository
STATE          STIME    FMRI
online         16:39:30 svc:/application/pkg/zones-proxyd:default

次のコマンドは、zones-proxydsystem-repository に依存していることを確認します。

$ svcs -do svc,desc zones-proxyd
SVC                               DESC
application/pkg/system-repository IPS System Repository
system/filesystem/minimal         minimal file system mounts
milestone/network                 Network milestone

次のコマンドは、zones-proxydsystem-repository にどのように依存しているかに関する詳細を表示します。この出力の最終行には、zones-proxyd サービスには system-repository サービスが実行していることが必要であることが示され、system-repository が現在実行していることが示されています。この出力には、system-repository サービスがリフレッシュされると zones-proxyd サービスが再起動されることも示されています。

$ svcs -l zones-proxyd
fmri         svc:/application/pkg/zones-proxyd:defaulr
name         Zones Proxy Daemon
enabled      true
state        online
next_state   none
state_time   January 6, 2014 04:39:30 PM PST
restarter    svc:/system/svc/restarter:default
manifest     /lib/svc/manifest/application/pkg/zoneproxyd.xml
dependency   require_any/none svc:/system/filesystem/minimal (online)
dependency   require_any/error svc:/milestone/network (online)
dependency   require_all/restart svc:/application/pkg/system-repository (online)

サービスが自動的に再起動するかどうかの表示

依存関係のいずれかが停止またはリフレッシュしたときに再起動するように、実行中のサービスを構成できます。実行中のサービス (online または degraded 状態) は、その依存関係が充足されていないと、offline 状態に遷移します。依存関係が停止またはリフレッシュしたあとにサービスを再起動すると、依存関係が再度充足され、依存サービスは実行状態に戻ることがあります。

require_allrequire_any、または optional_all の依存関係が停止またはリフレッシュしたあとで、サービスが再起動するかどうかは、次の要因によって決まります。

  • 依存関係が停止またはリフレッシュしたかどうか。停止した場合、依存関係が停止した理由がハードウェア障害やコアダンプなどのエラーによるものか、管理アクションなどのほかの理由によるものか。

  • 依存関係の restart_on 属性の値。可能な値は、noneerrorrestart、および refresh です。

次の表に示すように、依存関係の restart_on 属性の値が none である場合は、依存関係が停止またはリフレッシュしても依存サービスは再起動しません。依存関係の restart_on 属性の値が refresh である場合、依存関係が停止またはリフレッシュすると常に依存サービスは再起動します。restart_on の値が error である場合、エラーのために依存関係が停止した場合にのみ依存サービスは再起動します。restart_on の値が restart である場合、依存関係がリフレッシュした場合にのみ依存サービスは再起動します。

表 1  依存関係の停止後のサービスの自動再起動
require_allrequire_any、または optional_all の依存関係
依存関係 restart_on 属性の値
停止またはリフレッシュイベント
none
error
restart
refresh
エラーによる停止
再起動なし
再起動
再起動なし
再起動
その他の停止
再起動なし
再起動なし
再起動なし
再起動
リフレッシュ
再起動なし
再起動なし
再起動
再起動

サービスが依存するインスタンスの一覧表示では、system-repository サービスに、2 つの require_all 依存関係と 1 つの optional_all 依存関係があることを示しています。次のコマンドは、milestone/network サービスまたは system/filesystem/autofs サービスがエラーのために停止した場合に、system-repository サービスが再起動し、ほかの理由でこれらのサービスが停止またはリフレッシュした場合には、再起動しないことを示します。system-repository サービスは、system/filesystem/local サービスが何らかの理由でリフレッシュまたは停止した場合、再起動しません。

$ svccfg -s system-repository:default listprop -o propname,propval '*restart_on'
network/restart_on          astring     error
filesystem-local/restart_on astring     none
autofs/restart_on           astring     error