この章では、サービス管理機能 (Service Management Facility: SMF) の管理と監視に必要となる作業について説明します。さらに、実行レベルスクリプトの管理方法に関する情報も提供します。次の項目について説明します。
次の作業マップに、SMF を使用するために必要な手順を示します。
作業 |
説明 |
参照先 |
---|---|---|
サービスインスタンスの状態を表示します。 |
実行中のすべてのサービスインスタンスの状態を表示します。 | |
特定のサービスに依存するサービスを表示します。 |
指定されたサービスに依存するサービスを表示します。 | |
特定のサービスが依存するサービスを表示します。 |
指定されたサービスが依存するサービスを表示します。この情報があれば、特定のサービスが起動できない原因を特定しやすくなります。 | |
サービスインスタンスを無効にします。 |
正常に動作していないサービスや、セキュリティーを高めるためにオフにする必要があるサービスを無効にします。 | |
サービスインスタンスを有効にします。 |
特定のサービスを起動します。 | |
サービスインスタンスを再起動します。 |
無効化と有効化に各コマンドを使用することなしにサービスを再起動します。 | |
サービスインスタンスを変更します。 |
指定されたサービスインスタンスの設定パラメータを変更します。 | |
inetd によって制御されるサービスの設定プロパティーを変更します。 | ||
inetd によって制御されるサービスの起動オプションを変更します。 | ||
inetd.conf エントリを変換します。 |
inetd サービスを、SMF で監視可能な従来の実行サービスに変換します。 | |
破壊されたサービス設定リポジトリを修復します。 |
破壊されたリポジトリをデフォルトのバージョンと交換します。 | |
どのサービスも起動しないでシステムをブートします。 |
ブートを妨げている設定の問題を解決できるように、どのサービスも起動せずにシステムをブートします。 |
次の各作業は、SMF サービスの監視方法を示したものです。
この手順は、実行中のサービスを表示する場合に使用できます。
この例では、多くの契約を含むサービスの状態を表示しています。
% svcs -l network/login:rlogin fmri svc:/network/login:rlogin enabled true state online next_state none restarter svc:/network/inetd:/default contract_id 42325 41441 40776 40348 40282 40197 39025 38381 38053\ 33697 28625 24652 23689 15352 9889 7194 6576 6360 5387 1475 3015\ 6545 6612 9302 9662 10484 16254 19850 22512 23394 25876 26113 27326\ 34284 37939 38405 38972 39200 40503 40579 41129 41194 |
この例では、依存するサービスを持つサービスの状態を表示しています。
% svcs -l network/smtp:sendmail fmri svc:/network/smtp:sendmail enabled true state online next_state none restarter svc:/system/svc/restarter:default contract_id 29462 dependency require_all/refresh file://localhost/etc/nsswitch.conf (-) dependency require_all/refresh file://localhost/etc/mail/sendmail.cf (-) dependency optional_all/none svc:/system/system-log (online) dependency require_all/refresh svc:/system/identity:domain (online) dependency require_all/refresh svc:/milestone/name-services (online) dependency require_all/none svc:/network/service (online) dependency require_all/none svc:/system/filesystem/local (online) |
次のコマンドを実行すると、システムにインストールされているすべてのサービスが一覧表示されます。その際、各サービスの状態も表示されます。このコマンドでは、有効になっているサービスだけでなく、無効になっているサービスも表示されます。
% svcs -a |
次のコマンドを実行すると、inetd によって制御されるサービスが一覧表示されます。サービスごとに、FMRI のほかに、実行状態と有効になっているかどうかが表示されます。
% inetadm |
この手順は、指定されたサービスに依存するサービスインスタンスを確認する方法を示しています。
次の例は、マルチユーザーマイルストンに依存するサービスインスタンスを確認する方法を示しています。
% svcs -D milestone/multi-user STATE STIME FMRI online Apr_08 svc:/milestone/multi-user-server:default |
この手順は、指定されたサービスインスタンスが依存するサービスを確認する方法を示しています。
次の例では、マルチユーザーマイルストンが依存するサービスインスタンスを表示しています。
% svcs -d milestone/multi-user:default STATE STIME FMRI disabled Aug_24 svc:/platform/sun4u/sf880drd:default online Aug_24 svc:/milestone/single-user:default online Aug_24 svc:/system/utmp:default online Aug_24 svc:/system/system-log:default online Aug_24 svc:/system/system-log:default online Aug_24 svc:/system/rmtmpfiles:default online Aug_24 svc:/network/rpc/bind:default online Aug_24 svc:/milestone/name-services:default online Aug_24 svc:/system/filesystem/local:default online Aug_24 svc:/system/mdmonitor:default |
作業 |
説明 |
参照先 |
---|---|---|
サービスインスタンスを無効にします。 |
実行中のサービスを停止し、サービスが再び起動しないようにします。 | |
サービスインスタンスを有効にします。 |
特定のサービスを起動します。また、以降のリブート時にサービスが再起動されます。 | |
特定のサービスを再起動します。 |
サービスの停止と起動を 1 つのコマンドで行います。 | |
保守状態のサービスを復元します。 |
保守状態のサービスをクリーンアップして再起動する方法を示します。 | |
スナップショットに戻します。 |
以前のスナップショットを使用して、サービスの問題を修正します。 | |
プロファイルを作成します。 |
必要に応じてサービスを無効または有効にするために、プロファイルを作成します。 | |
プロファイルを適用します。 |
プロファイルの情報を使用して、必要に応じてサービスを無効または有効にします。 | |
netservices コマンドを使用して、サービスとその設定を変更します。 |
generic_limited.xml プロファイルまたは generic_open.xml プロファイルの情報を使用して、サービスを無効または有効にし、サービスの設定の変更も行います。 |
この節では、SMF サービスの管理について説明します。
RBAC 権利プロファイルを使用して root アクセス権を付与していないユーザーに、一部の SMF サービスの管理を許可することができます。権利プロファイルには、そのユーザーが実行できるコマンドを定義します。SMF のために次のプロファイルが作成されています。
Service Management: サービスを追加、削除、または変更できます。
Service Operator: 再起動や再表示など、サービスインスタンスの状態の変更を要求できます。
承認については、smf_security(5) のマニュアルページを参照してください。権利プロファイルを割り当てる手順については、『Solaris のシステム管理 (セキュリティサービス)』の「ユーザーの RBAC プロパティーを変更する方法」を参照してください。
サービスを無効にするには、次の手順に従います。サービスの状態変化はサービス設定リポジトリ内に記録されます。サービスがいったん無効になると、その無効な状態はリブート後も維持されます。サービスを実行中の状態に戻す唯一の方法は、そのサービスを有効にすることです。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
無効にするサービスに依存するサービスの有無を確認します。
必要とするサービスがこのサービスに依存していた場合、このサービスを無効にできません。
# svcs -D FMRI |
サービスを無効にします。
# svcadm disable FMRI |
最初のコマンドの出力結果から、rlogin サービスに依存するサービスは存在しないことがわかります。この例の 2 番目のコマンドは、rlogin サービスを無効にしています。3 番目のコマンドの結果から、rlogin サービスインスタンスの状態が無効になっていることがわかります。
# svcs -D network/login:rlogin # svcadm disable network/login:rlogin STATE STIME FMRI # svcs network/login:rlogin STATE STIME FMRI disabled 11:17:24 svc:/network/login:rlogin |
サービスを有効にするには、次の手順に従います。サービスの状態変化はサービス設定リポジトリ内に記録されます。サービスがいったん有効になると、そのサービスの依存関係に問題がない限り、その有効な状態はシステムのリブート後も維持されます。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
サービスの依存関係に問題がないか確認します。
依存するサービスが有効になっている場合、サービスの依存関係に問題はありません。そうでない場合は、svcadm enable -r FMRI を使用して、すべての依存関係を再帰的に有効にします。
# svcs -l FMRI|grep enabled |
サービスを有効にします。
# svcadm enable FMRI |
この例の 2 番目のコマンドは、rlogin サービスを有効にしています。3 番目のコマンドの結果から、rlogin サービスインスタンスの状態がオンラインになっていることがわかります。
# svcs -l network/login:rlogin|grep enabled enabled false # svcadm enable network/login:rlogin # svcs network/login:rlogin STATE STIME FMRI online 12:09:16 svc:/network/login:rlogin |
次のコマンドは rpcbind を有効にします。-t オプションは、サービスリポジトリを変更しないモードでサービスを一時的に起動します。このリポジトリにシングルユーザーモードで書き込むことはできません。-r オプションは、指定されたサービスのすべての依存関係を再帰的に有効にします。
# svcadm enable -rt rpc/bind |
設定が変更されたなどの理由により現在実行中のサービスを再起動する必要が生じた場合、サービスの停止時と起動時に個々のコマンドを入力することなく、サービスの再起動を行えます。サービスの無効化と有効化を別々に行う必要があるのは、サービスの無効化後かつ有効化前に変更を反映する必要がある場合だけです。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
特定のサービスを再起動します。
# svcadm restart FMRI |
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
そのサービスに依存するプロセスのうち、停止していないものが存在しないかどうかを確認します。
通常、サービスインスタンスが保守状態になっている場合、そのインスタンスに関連付けられたすべてのプロセスが停止しています。しかしながら、処理を進める前にそのことを確認する必要があります。次のコマンドを実行すると、特定のサービスインスタンスに関連付けられたすべてのプロセスが一覧表示されます。その際、各プロセスの PID も表示されます。
# svcs -p FMRI |
(省略可能) 残っているプロセスをすべて強制終了します。
svcs コマンドで表示されたすべてのプロセスに対して、この手順を繰り返します。
# pkill -9 PID |
必要であれば、サービスの設定を修復します。
/var/svc/log 内の対応するサービスログファイルを開き、エラーが発生していないか確認します。
サービスを復元します。
# svcadm clear FMRI |
サービスの設定が間違っている場合、正常に起動した最後のスナップショットに戻すことで問題を解決できます。この手順では、console-login サービスの以前のスナップショットを使用します。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
svccfg コマンドを実行します。
# svccfg svc:> |
修正するサービスインスタンスを選択します。
インスタンスを完全に定義した FMRI を使用する必要があります。短縮形は使えません。
svc:> select system/console-login:default svc:/system/console-login:default> |
利用可能なスナップショットの一覧を生成します。
svc:/system/console-login:default> listsnap initial running start svc:/system/console-login:default> |
戻し先として start スナップショットを選択します。
start スナップショットとは、サービスが正常に起動した最後のスナップショットのことです。
svc:/system/console-login:default> revert start svc:/system/console-login:default> |
svccfg を終了します。
svc:/system/console-login:default> quit # |
サービス設定リポジトリ内の情報を更新します。
この手順では、start スナップショットの設定情報に基づいてリポジトリを更新します。
# svcadm refresh system/console-login |
サービスインスタンスを再起動します。
# svcadm restart system/console-login |
プロファイルとは、SMF サービスの一覧とそれぞれを有効にするかどうかを示す XML ファイルのことです。プロファイルは、多くのサービスを一度に有効または無効にするために使用されます。すべてのサービスをプロファイルに含める必要はありません。効果的なプロファイルを作成するには、各プロファイルには有効または無効にする必要のあるサービスだけを含めるようにします。
プロファイルを作成します。
この例では、svccfg コマンドを使用して、現在のシステムで有効になっているサービスと無効になっているサービスを反映するプロファイルを作成します。代わりに、既存のプロファイルのコピーを作成し、それを編集することもできます。
# svccfg extract> profile.xml |
Oracle Solaris JumpStart を使用する場合、同一のシステムが多数ある場合、またはあとで復元できるようにシステムの設定のアーカイブを作成する場合は、この手順を使用して単一の SMF プロファイルを作成することができます。
profile.xml ファイルを編集して、必要な変更を加えます。
service_bundle 宣言内のプロファイルの名前を変更します。
この例では、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 行の構文を使用して各サービスを定義する必要があります。
必要に応じて、選択したサービスの enabled フラグを変更します。
この例では、sendmail サービスを無効にしています。
# cat profile.xml ... <service name='network/smtp' version='1' type='service'> <instance name='sendmail' enabled='false'/> </service> ... |
必要に応じて、この新しいプロファイルを適用します。
手順については、「SMF プロファイルを適用する方法」を参照してください。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
プロファイルを適用します。
この例では、profile.xml プロファイルを使用しています。
# svccfg apply profile.xml |
generic_limited_net.xml と generic_open.xml を切り替えるための具体的な手順、およびこの切り替えを行うときに適用する必要のあるプロパティーについては、「ネットワークに提供するサービスを generic*.xml で変更する」を参照してください。
netservices コマンドを使用すると、ネットワークに最小限のシステムサービスを公開するか、従来の (以前の Solaris リリースと同じ) サービスを公開するかを切り替えることができます。この切り替えは、generic_limited.xml プロファイルと generic_open.xml プロファイルによって行われます。また、このコマンドによって一部のサービスのプロパティーが変更され、それに従ってサービスがローカル専用モードや従来モードに制限されます。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
netservices コマンドを実行します。
この例では、open、つまり従来のネットワークサービスの公開を選択しています。
# /usr/sbin/netservices open |
このコマンドは、一部のサービスをローカルモードで実行するようにプロパティーを変更し、有効にするサービスを generic_limited_net プロファイルによって制限します。このコマンドは、generic_open.xml プロファイルが適用されている場合のみ使用するようにしてください。
# /usr/sbin/netservices limited |
次の手順は、inetd サービスによって管理されていないサービスの設定を変更する方法を示します。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
必要に応じて設定ファイルを変更します。
多くのサービスは、起動方法などの設定情報を定義するための設定ファイルを 1 つ以上持っています。それらのファイルはサービス実行中でも変更可能です。ファイルの内容がチェックされるのはサービス起動時です。
サービスを再起動します。
# svcadm restart FMRI |
NFS サービスを使って特定のファイルシステムを共有するには、そのファイルシステムを /etc/dfs/dfstab ファイル内に定義したあと、NFS サービスを再起動する必要があります。この例は、dfstab ファイルの内容とサービスの起動方法を示しています。
# cat /etc/dfs/dfstab . . share -F nfs -o rw /export/home # svcadm restart svc:/network/nfs/server |
この手順は、デバッグに役立つよう cron 環境変数を変更する方法を示します。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
サービスが実行されていることを確認します。
# svcs system/cron STATE STIME FMRI online Dec_04 svc:/system/cron:default |
環境変数を設定します。
次の例では、環境変数 UMEM_DEBUG および LD_PRELOAD を設定しています。setenv サブコマンドについては、svccfg(1M) のマニュアルページを参照してください。
# svccfg -s system/cron:default setenv UMEM_DEBUG default # svccfg -s system/cron:default setenv LD_PRELOAD libumem.so |
サービスの再表示と再起動を行います。
# svcadm refresh system/cron # svcadm restart system/cron |
正しく変更されたことを確認します。
# pargs -e `pgrep -f /usr/sbin/cron` 100657: /usr/sbin/cron envp[0]: LOGNAME=root envp[1]: LD_PRELOAD=libumem.so envp[2]: PATH=/usr/sbin:/usr/bin envp[3]: SMF_FMRI=svc:/system/cron:default envp[4]: SMF_METHOD=/lib/svc/method/svc-cron envp[5]: SMF_RESTARTER=svc:/system/svc/restarter:default envp[6]: TZ=GB envp[7]: UMEM_DEBUG=default # |
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
特定のサービスのプロパティーを一覧表示します。
このコマンドを実行すると、FMRI で指定されたサービスのすべてのプロパティーが表示されます。
# inetadm -l FMRI |
サービスのプロパティーを変更します。
inetd 制御サービスの各プロパティーは、プロパティー名とその値によって定義されます。値を指定せずにプロパティー名を指定した場合、そのプロパティーはデフォルト値にリセットされます。特定のサービスのプロパティーの詳細については、そのサービスのマニュアルページを参照してください。
# inetadm -m FMRI property-name=value |
プロパティーが変更されたことを確認します。
プロパティーを再度一覧表示し、適切に変更されていることを確認します。
# inetadm -l FMRI |
変更が適用されていることを確認します。
プロパティーに対する変更が期待どおりに適用されていることを確認します。
次の例は、telnet の tcp_trace プロパティーを true に設定する方法を示しています。telnet コマンドの実行後の syslog 出力の結果から、変更が適用されていることがわかります。
# inetadm -l svc:/network/telnet:default SCOPE NAME=VALUE name="telnet" . . default inherit_env=TRUE default tcp_trace=FALSE default tcp_wrappers=FALSE # inetadm -m svc:/network/telnet:default tcp_trace=TRUE # inetadm -l svc:/network/telnet:default SCOPE NAME=VALUE name="telnet" . . default inherit_env=TRUE tcp_trace=TRUE default tcp_wrappers=FALSE # telnet localhost Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. login: root Password: Last login: Mon Jun 21 05:55:45 on console Sun Microsystems Inc. SunOS 5.10 s10_57 May 2004 # ^D Connection to localhost closed by foreign host. # tail -1 /var/adm/messages Jun 21 06:04:57 yellow-19 inetd[100308]: [ID 317013 daemon.notice] telnet[100625] from 127.0.0.1 32802 |
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
特定のサービスの exec プロパティーを表示します。
このコマンドを実行すると、FMRI で指定されたサービスのすべてのプロパティーが表示されます。grep コマンドを追加することで、サービスの exec プロパティーに出力を制限しています。
# inetadm -l FMRI|grep exec |
サービスの exec プロパティーを変更します。
exec プロパティーに設定される command-syntax は、サービス起動時に実行されるコマンド文字列を定義します。
# inetadm -m FMRI exec="command-syntax " |
プロパティーが変更されたことを確認します。
プロパティーを再度一覧表示し、適切に変更されていることを確認します。
# inetadm -l FMRI |
この例では、ftp デーモンの起動オプションに -l オプションを追加しています。この変更が適用されたことを確かめるには、ftp ログインセッション完了後に syslog 出力を調べます。
# inetadm -l svc:/network/ftp:default | grep exec exec="/usr/sbin/in.ftpd -a" # inetadm -m svc:/network/ftp:default exec="/usr/sbin/in.ftpd -a -l" # inetadm -l svc:/network/ftp:default SCOPE NAME=VALUE name="ftp" endpoint_type="stream" proto="tcp6" isrpc=FALSE wait=FALSE exec="/usr/sbin/in.ftpd -a -l" . . # ftp localhost Connected to localhost. 220 yellow-19 FTP server ready. Name (localhost:root): mylogin 331 Password required for mylogin. Password: 230 User mylogin logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> quit 221-You have transferred 0 bytes in 0 files. 221-Total traffic for this session was 236 bytes in 0 transfers. 221-Thank you for using the FTP service on yellow-19. 221 Goodbye. # tail -2 /var/adm/messages Jun 21 06:54:33 yellow-19 ftpd[100773]: [ID 124999 daemon.info] FTP LOGIN FROM localhost [127.0.0.1], mylogin Jun 21 06:54:38 yellow-19 ftpd[100773]: [ID 528697 daemon.info] FTP session closed |
次の手順では、inetd.conf エントリを SMF サービス目録に変換します。inetd に依存する Sun 以外のアプリケーションをシステムに追加するたびに、この手順を実行する必要があります。また、/etc/inetd.conf 内のエントリに設定変更を行う必要がある場合にも、この手順を実行してください。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
inetd.conf エントリを変換します。
inetconv コマンドは、選択されたファイル内の各エントリをサービス目録に変換します。
# inetconv -i filename |
# inetconv -i /etc/inet/inetd.conf |
作業 |
説明 |
参照先 |
---|---|---|
サービスを起動または停止します。 |
実行制御スクリプトを使用してサービスを起動または停止します。 | |
実行制御スクリプトを追加します。 |
実行制御スクリプトを作成し、それを /etc/init.d ディレクトリに追加します。 | |
実行制御スクリプトを無効にします。 |
ファイル名を変更することで実行制御スクリプトを無効にします。 |
実行レベルごとに対応するスクリプトを持つことの利点は、/etc/init.d ディレクトリ内の個々のスクリプトを実行することによって、システムの実行レベルを変更しないで (現在の実行レベルの) システムサービスを停止できる点です。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
システムサービスを停止します。
# /etc/init.d/filename stop |
システムサービスを再開します。
# /etc/init.d/filename start |
# pgrep -f service |
NFS サーバーデーモンを停止するには、次のように入力します。
# /etc/init.d/nfs.server stop # pgrep -f nfs |
そして、NFS サーバーデーモンを再開するには、次のように入力します。
# /etc/init.d/nfs.server start # pgrep -f nfs 101773 101750 102053 101748 101793 102114 # pgrep -f nfs -d, | xargs ps -fp UID PID PPID C STIME TTY TIME CMD daemon 101748 1 0 Sep 01 ? 0:06 /usr/lib/nfs/nfsmapid daemon 101750 1 0 Sep 01 ? 26:27 /usr/lib/nfs/lockd daemon 101773 1 0 Sep 01 ? 5:27 /usr/lib/nfs/statd root 101793 1 0 Sep 01 ? 19:42 /usr/lib/nfs/mountd daemon 102053 1 0 Sep 01 ? 2270:37 /usr/lib/nfs/nfsd daemon 102114 1 0 Sep 01 ? 0:35 /usr/lib/nfs/nfs4cbd |
サービスを起動または停止するための実行制御スクリプトを追加するには、そのスクリプトを/etc/init.d ディレクトリにコピーします。次に、サービスを起動または停止する rcn.d ディレクトリ内にリンクを作成します。
実行制御スクリプトの命名法の詳細については、/etc/rcn.d ディレクトリ内の README ファイルを参照してください。次に、実行制御スクリプトを追加する方法について説明します。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
スクリプトを /etc/init.d ディレクトリに追加します。
# cp filename/etc/init.d # chmod 0744 /etc/init.d/filename # chown root:sys /etc/init.d/filename |
適切な rcn.d ディレクトリへのリンクを作成します。
# cd /etc/init.d # ln filename /etc/rc2.d/Snnfilename # ln filename /etc/rcn.d/Knnfilename |
スクリプトのリンクが指定のディレクトリ内にあることを確認します。
# ls /etc/init.d/*filename /etc/rc2.d/*filename /etc/rcn.d/*filename |
次の例は、xyz サービスの実行制御スクリプトを追加する方法を示しています。
# cp xyz /etc/init.d # chmod 0744 /etc/init.d/xyz # chown root:sys /etc/init.d/xyz # cd /etc/init.d # ln xyz /etc/rc2.d/S99xyz # ln xyz /etc/rc0.d/K99xyz # ls /etc/init.d/*xyz /etc/rc2.d/*xyz /etc/rc0.d/*xyz |
実行制御スクリプトを無効にするには、ファイル名の先頭に下線 (_) を付けてファイル名を変更します。下線またはドット (.) で始まるファイルは実行されません。接尾辞を追加してファイルをコピーすると、両方のファイルが実行されます。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
新しいファイルの先頭に下線 (_) を付けて、スクリプト名を変更します。
# cd /etc/rcn.d # mv filename_filename |
# ls _* _filename |
次の例は、S99datainit スクリプトの名前を変更する方法を示しています。
# cd /etc/rc2.d # mv S99datainit _S99datainit # ls _* _S99datainit |
この手順では、印刷サービスが無効になっています。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
ハングしたサービスに関する情報を要求します。
# svcs -xv svc:/application/print/server:default (LP Print Service) State: disabled since Wed 13 Oct 2004 02:20:37 PM PDT Reason: Disabled by an administrator. See: http://sun.com/msg/SMF-8000-05 See: man -M /usr/share/man -s 1M lpsched Impact: 2 services are not running: svc:/application/print/rfc1179:default svc:/application/print/ipp-listener:default |
-x オプションを指定すると、影響を受けたサービスインスタンスに関する情報も表示されます。
サービスを有効にします。
# svcadm enable application/print/server |
この手順は、破壊されたリポジトリをデフォルトのリポジトリと交換する方法を示しています。リポジトリデーモン svc.configd が起動すると、設定リポジトリの整合性チェックが行われます。このリポジトリは、/etc/svc/repository.db に格納されています。このリポジトリは、次のいずれかが原因で破壊されることがあります。
ディスク障害
ハードウェアのバグ
ソフトウェアのバグ
過失によるファイルの上書き
整合性チェックに失敗すると、svc.configd デーモンは次のようなメッセージをコンソールに書き出します。
svc.configd: smf(5) database integrity check of: /etc/svc/repository.db failed. The database might be damaged or a media error might have prevented it from being verified. Additional information useful to your service provider is in: /etc/svc/volatile/db_errors The system will not be able to boot until you have restored a working database. svc.startd(1M) will provide a sulogin(1M) prompt for recovery purposes. The command: /lib/svc/bin/restore_repository can be run to restore a backup version of your repository. See http://sun.com/msg/SMF-8000-MY for more information. |
その後 svc.startd デーモンが終了し、sulogin が起動して保守作業を行えるようになります。
sulogin プロンプトで root パスワードを入力します。sulogin では、root ユーザーはシステム保守モードに入ってシステムを修復できます。
次のコマンドを実行します。
# /lib/svc/bin/restore_repository |
このコマンドを実行すると、破壊されていないバックアップの復元に必要な手順が示されます。SMF では、システムの重要な局面でリポジトリのバックアップが自動的に作成されます。詳細は、「SMF リポジトリのバックアップ」を参照してください。
/lib/svc/bin/restore_repository コマンドが起動すると、次のようなメッセージが表示されます。
Repository Restore utility See http://sun.com/msg/SMF-8000-MY for more information on the use of this script to restore backup copies of the smf(5) repository. If there are any problems which need human intervention, this script will give instructions and then exit back to your shell. Note that upon full completion of this script, the system will be rebooted using reboot(1M), which will interrupt any active services. |
復元するシステムがローカルゾーンでない場合は、読み取り権と書き込み権を付けて / ファイルシステムおよび /usr ファイルシステムをマウントし直しデータベースを復元する方法が表示されます。これらの説明を表示したあと、スクリプトは終了します。エラーの発生に特に注意しながら、これらの説明に従います。
書き込み権を付けてルート (/) ファイルシステムをマウントしたあと、またはシステムがローカルゾーンである場合は、復元するリポジトリのバックアップを選択するよう求められます。
The following backups of /etc/svc/repository.db exists, from oldest to newest: ... list of backups ... |
バックアップには、バックアップのタイプとバックアップが作成された時間に基づいて名前が付けられています。boot で始まっているのは、システムのブート後、リポジトリに対して最初の変更が行われる前に作成されたバックアップです。manifest_import で始まっているのは、svc:/system/manifest-import:default のプロセス終了後に作成されたバックアップです。バックアップ時間は、YYYYMMDD_HHMMSS 形式で記録されます。
適切な応答を入力します。
通常は、最新のバックアップオプションを選択します。
Please enter one of: 1) boot, for the most recent post-boot backup 2) manifest_import, for the most recent manifest_import backup. 3) a specific backup repository from the above list 4) -seed-, the initial starting repository. (All customizations will be lost.) 5) -quit-, to cancel. Enter response [boot]:
復元するバックアップを指定しないで Enter キーを押した場合は、[] で囲まれたデフォルトの応答が選択されます。-quit- を選択すると、restore_repository スクリプトが終了して、シェルスクリプトに戻ります。
-seed- を選択すると、seed リポジトリが復元されます。このリポジトリは、初期インストールとアップグレード時に使用する目的で作成されたものです。seed リポジトリを回復の目的で使用するのは、最後の手段にしてください。
復元するバックアップを選択すると、妥当性検査が行われ、その整合性がチェックされます。なんらかの問題があると、restore_repository コマンドによってエラーメッセージが表示され、別のバックアップを選択するよう促されます。有効なバックアップを選択すると、次の情報が表示され、最終確認を入力するよう促されます。
After confirmation, the following steps will be taken: svc.startd(1M) and svc.configd(1M) will be quiesced, if running. /etc/svc/repository.db -- renamed --> /etc/svc/repository.db_old_YYYYMMDD_HHMMSS /etc/svc/volatile/db_errors -- copied --> /etc/svc/repository.db_old_YYYYMMDD_HHMMSS_errors repository_to_restore -- copied --> /etc/svc/repository.db and the system will be rebooted with reboot(1M). Proceed [yes/no]?
yes と入力して障害を修復します。
restore_repository コマンドが表示されたアクションをすべて実行すると、システムがリブートします。
サービスの起動に関する問題が発生した場合、ブート時にシステムがハングアップする可能性があります。この手順は、そうした問題のトラブルシューティングを行う方法を示しています。
どのサービスも起動しないでブートします。
このコマンドを実行すると、svc.startd デーモンはすべてのサービスを一時的に無効にし、コンソール上で sulogin を起動します。
ok boot -m milestone=none |
システムに root としてログインします。
すべてのサービスを有効にします。
# svcadm milestone all |
ブートプロセスがどこでハングアップするのかを確認します。
ブートプロセスがハングアップしたら、動作していないサービスを確認するために、svcs -a を実行します。/var/svc/log のログファイル内でエラーメッセージの有無を確認します。
問題が解決したら、すべてのサービスが起動していることを確認します。
通常のブートプロセスを継続します。
Solaris OS のブートに必要でないローカルファイルシステムは、svc:/system/filesystem/local:default サービスによってマウントされます。これらのファイルシステムのいずれかがマウントできない場合、このサービスは保守状態になります。システムの起動は続行され、filesystem/local に依存しないサービスは起動されます。依存関係を介して起動されるサービスで、オンラインになるために filesystem/local を必要とするものは、起動されません。
サービスで障害が発生した場合に、システムの起動の続行を許可する代わりに、ただちに sulogin プロンプトを表示するようシステムの設定を変更するには、次の手順に従ってください。
system/console-login サービスを変更します。
# svccfg -s svc:/system/console-login svc:/system/console-login> addpg site,filesystem-local dependency svc:/system/console-login> setprop site,filesystem-local/entities = fmri: svc:/system/filesystem/local svc:/system/console-login> setprop site,filesystem-local/grouping = astring: require_all svc:/system/console-login> setprop site,filesystem-local/restart_on = astring: none svc:/system/console-login> setprop site,filesystem-local/type = astring: service svc:/system/console-login> end |
サービスを再表示します。
# svcadm refresh console-login |
次に示すコマンドをスクリプトに保存し、/etc/rcS.d/S01site-customfs として保存します。
#!/bin/sh # # This script adds a dependency from console-login -> filesystem/local # This forces the system to stop the boot process and drop to an sulogin prompt # if any file system in filesystem/local fails to mount. PATH=/usr/sbin:/usr/bin export PATH svccfg -s svc:/system/console-login << EOF addpg site,filesystem-local dependency setprop site,filesystem-local/entities = fmri: svc:/system/filesystem/local setprop site,filesystem-local/grouping = astring: require_all setprop site,filesystem-local/restart_on = astring: none setprop site,filesystem-local/type = astring: service EOF svcadm refresh svc:/system/console-login [ -f /etc/rcS.d/S01site-customfs ] && rm -f /etc/rcS.d/S01site-customfs |
system/filesystem/local:default サービスで障害が発生したときは、svcs -vx コマンドを使用して障害を特定するようにしてください。障害が修正されたら、次のコマンドでエラー状態をクリアし、システムのブートを続行できるようにします。 svcadm clear filesystem/local。