ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 でのサービスと障害の管理 Oracle Solaris 11.1 Information Library (日本語) |
実行制御スクリプトを使用して従来のサービスを起動または停止する方法
ブート中に system/filesystem/local:default サービスで障害が発生した場合に sulogin プロンプトを強制的に表示する方法
このセクションでは、SMF サービスの管理について説明します。
次のタスクマップに、SMF サービスを管理するために必要な手順を示します。
|
RBAC 権利プロファイルを使用して、root アクセス権を付与していないユーザーに一部の SMF サービスの管理を許可できます。権利プロファイルには、そのユーザーが実行できるコマンドを定義します。SMF のために次のプロファイルが作成されています。
Service Management: サービスを追加、削除、または変更できます。
Service Operator: 再起動やリフレッシュなど、サービスインスタンスの状態の変更を要求できます。
承認については、smf_security(5) のマニュアルページを参照してください。権利プロファイルを割り当てる手順については、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「ユーザーのセキュリティー属性を変更する方法」を参照してください。
管理者は、システムのブート中に作業を実行するスクリプトを記述することがよくあります。この手順では、スクリプトをサポートする SMF の利点を使用する方法を示します。
始める前に
スクリプトが必要とするサービスモデルを確認します。スクリプトが何らかの作業を実行し、長期間実行するプロセスを開始せずに終了するのであれば、ほとんどの場合は一時的なサービスです。スクリプトが長時間実行するデーモンを開始してから終了する場合、それは契約サービスです。サービスモデルについての詳細は、svc.startd(1M) のマニュアルページの期間セクションを参照してください。
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
この例で、サービス名は site/ex_svc で、一時的なサービスであるため、停止メソッドは不要です。
# svcbundle -o /tmp/ex_svc.xml -s service-name=site/ex_svc \ -s start-method=/lib/svc/method/ex_svc -s model=transient
/tmp/ex_svc.xml 内のマニフェストが、必要な内容であることを確認します。
# cp /tmp/ex_svc.xml /lib/svc/manifest/site/ex_svc.xml
# svcadm restart svc:/system/manifest-import
例 2-12 生成されたマニフェストを自動的にインストールする
マニフェストを /lib/svc/manifest/site に自動的にインストールするには、下に示すように -i オプションを付けて svcbundle コマンドを使用します。このコマンドはステップ 3 のコマンドの代わりに実行でき、他のステップを実行する必要はありません。
# svcbundle -i -s service-name=site/ex_svc \ -s start-method=/lib/svc/method/ex_svc -s model=transient
サービスを無効にするには、次の手順に従います。サービスのステータス変化はサービス構成リポジトリ内に記録されます。サービスがいったん無効になると、その無効な状態はリブート後も維持されます。サービスを実行中の状態に戻す唯一の方法は、そのサービスを有効にすることです。
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
必要とするサービスがこのサービスに依存していた場合、このサービスを無効にできません。
# svcs -D FMRI
# svcadm disable FMRI
サービスを有効にするには、次の手順に従います。サービスのステータス変化はサービス構成リポジトリ内に記録されます。サービスを有効にすると、システムのリブートまで有効な状態が持続しますが、サービスが起動するのはすべての依存関係が満たされた場合だけです。
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
# svcadm enable FMRI
# svcs -x FMRI
必要な依存関係が無効になっている場合は、次のコマンドを使用して有効にします。
# svcadm enable -r FMRI
例 2-13 シングルユーザーモードでサービスを有効にする
次のコマンドは rpcbind を有効にします。-t オプションを指定すると、サービスが一時モードで起動され、サービスリポジトリが変更されないため、この変更はリブートまで持続しません。-r オプションは、指定されたサービスのすべての依存関係を再帰的に有効にします。
# svcadm enable -rt rpc/bind
構成が変更されたなどの理由により現在実行中のサービスを再起動する必要が生じた場合、サービスの停止時と起動時に個々のコマンドを入力することなく、サービスの再起動を行えます。サービスの無効化と有効化を別々に行う必要があるのは、サービスの無効化後かつ有効化前に変更を反映する必要がある場合だけです。
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
# svcadm restart FMRI
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
# svcs -x FMRI
指示されたログファイルまたはマニュアルページを参照して、エラーの内容を特定します。
通常、サービスインスタンスが保守状態になっている場合、そのインスタンスに関連付けられたすべてのプロセスが停止しています。ただし、処理を進める前にそのことを確認する必要があります。次のコマンドは、選択された FMRI の契約 ID を一覧表示します。
# svcs -o CTID FMRI
svcs コマンドで表示されたすべてのプロセスに対して、この手順を繰り返します。
# pkill -9 -c CTID
# svcadm clear FMRI
プロファイルとは、SMF サービスの一覧とそれぞれを有効にするかどうかを示す XML ファイルのことです。プロファイルは、多くのサービスを一度に有効または無効にするために使用されます。プロファイルは、プロパティー値の設定、プロパティー値の追加、およびサービスやサービスのインスタンスの作成にも使用されます。すべてのサービスをプロファイルに含める必要はありません。効果的なプロファイルを作成するには、各プロファイルには有効または無効にする必要のあるサービスだけを含めるようにします。
svc:/system/rmtmpfiles サービスは、/tmp ディレクトリをブート時にクリーンアップする役割を担っています。デフォルトでは、rmtmpfiles サービスは /var/tmp をクリーンアップしません。ブートプロセス中に /var/tmp をクリーンアップする場合、options/clean_vartmp プロパティーを true に設定することによって動作を変更できます。これを複数のシステムに対して実行する場合、もっとも簡単な方法は、プロファイルを作成し、それをこれらのシステムの /etc/svc/profile/site に配置することです。
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
このコマンドにより、/tmp/rmtmpfiles.xml に新しいプロファイルが作成され、これをあとで必要に応じて /etc/svc/profiles/site にコピーできます。
# svcbundle -o /tmp/rmtmpfiles.xml -s service-name=system/rmtmpfiles \ -s bundle-type=profile -s service-property=options:clean_vartmp:boolean:true
# cp /tmp/rmtmpfiles.xml /etc/svc/profile/site/rmtmpfiles.xml
# svcadm restart svc:/system/manifest-import
例 2-14 プロファイルの作成中に SMF プロファイルを自動的にインストールする
生成されたプロファイルをインストールするには -i オプションを使用します。コマンドはプロファイルを /etc/svc/profile/site/rmtmpfiles.xml に書き込みます。また、コマンドは manifest-import サービスを再起動してプロファイルを適用します。
# svcbundle -i -s service-name=system/rmtmpfiles \ -s bundle-type=profile -s service-property=options:clean_vartmp:boolean:true
プロファイルとは、SMF サービスの一覧とそれぞれを有効にするかどうかを示す XML ファイルのことです。プロファイルは、多くのサービスを一度に有効または無効にするために使用されます。プロファイルは、プロパティー値の設定、プロパティー値の追加、およびサービスやサービスのインスタンスの作成にも使用されます。すべてのサービスをプロファイルに含める必要はありません。効果的なプロファイルを作成するには、各プロファイルには有効または無効にする必要のあるサービスだけを含めるようにします。
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
この例では、svccfg コマンドを使用して、現在のシステムに対するローカルのカスタマイズを表すプロファイルを作成しています。代わりに、既存のプロファイルのコピーを作成し、それを編集することもできます。
# svccfg extract> profile.xml
同一のシステムが多数ある場合や、あとで復元できるようにシステム構成のアーカイブを作成する場合は、この手順を使用して単一の SMF プロファイルを作成することもできます。
この例では、profile という名前に変更しています。
# cat profile.xml ... <service_bundle type=`profile` name=`profile` xmIns::xi='http://www.w3.org/2003/XInclude' ...
各サービスについて、サービスを説明する 3 行を削除します。各サービスの説明は、<service で始まり、</service で終わります。この例は、LDAP クライアントサービスの行を示しています。
# cat profile.xml ... <service name='network/ldap/client' version='1' type='service'> <instance name='default' enabled='true'/> </service>
上記の 3 行の構文を使用して各サービスを定義する必要があります。
この例では、sendmail サービスを無効にしています。
# cat profile.xml ... <service name='network/smtp' version='1' type='service'> <instance name='sendmail' enabled='false'/> </service> ...
手順については、「SMF プロファイルを適用する方法」を参照してください。
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
この例では、profile.xml を適用しています。
# svccfg apply profile.xml