次のセクションには、SMF サービスインスタンスを作成、変更、および表示する方法に関する情報が記載されています。また、SMF アクセス制御についても説明します。
スケジュールされている各 SMF サービスは、リスタータによって管理されます。マスターリスタータ svc.startd は、サービスインスタンスの完全なセットおよびその依存関係の状態を管理します。マスターリスタータは、自身のサービスに代って各種処理を行うほか、特定アプリケーションクラス向けの特定実行環境を提供できる委任リスタータを制御します。たとえば、inetd は、初期環境でサービスインスタンスを提供する委任されたリスタータです。inetd に委任されたそれぞれのサービスインスタンスがオンライン状態になっています。ある特定のインスタンスのデーモンが実行されていなくても、そのインスタンスを実行することは可能です。インスタンスがオンライン状態に移行したときに依存関係が満たされていると、svc.startd は、重複している可能性があるほかのインスタンスの起動メソッドを呼び出します。すべての SMF リスタータの構成設定を表示するには、smf_restarter(5) のマニュアルページを参照してください。
各サービスまたはサービスインスタンスは、サービスの起動、停止、およびリフレッシュを行う一連のメソッドを定義する必要があります。svc.startd および類似したリスタータのメソッド表記に関する詳細は、smf_method(5) のマニュアルページを参照してください。レガシー構成情報のリポジトリへの取得などの管理メソッドについては、svccfg(1M) のマニュアルページで説明されています。
scheduled_method 要素によって委任される SMF のスケジュールされているサービスインスタンスには、特定の時間が必要です。scheduled_method 要素は、スケジュールされているサービスのメソッド情報とスケジューリング情報の両方を指定します。
|
制約および scheduled_method 要素の指定方法の詳細は、Oracle Solaris 11.3 でのシステムサービスの開発 の scheduled_method 要素の指定を参照してください。
次の例は、毎週日曜日の午前 1 時 00 分に自動的に実行するようにスケジュールされている SMF サービスインスタンスを作成する方法を示しています。
<?xml version='1.0'?>
<!DOCTYPE service_bundle
SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<service_bundle type='manifest' name='site/sample-periodic-svc'>
<service type='service' version='1' name='site/sample-periodic-svc'>
<instance name='default' enabled='false'>
<scheduled_method
schedule='month'
day='0'
hour='1'
minute='0'
exec='/usr/bin/scheduled_service_method'
timeout_seconds='0'>
<method_context>
<method_credential user='root' group='root' />
</method_context>
</scheduled_method>
</instance>
</service>
</service_bundle>
定期的なサービスの作成方法のステップごとの詳細は、Oracle Solaris 11.3 でのシステムサービスの開発 の 第 3 章, 定期的に実行するサービスの作成を参照してください。