SMF
Service Management Facility
Solaris10から採用されたサービス管理のための概念
Solaris10から採用されたサービス管理のための概念
- svcs
- サービスの状況を確認する
- svcadm
- サービスの起動や停止等の一般的な管理を行う
- svccfg
- サービスの登録や削除、内容の変更を行う
- svcprop
- サービスのプロパティ値を出力する
- inetadm
- inetd経由で起動されるサービスを管理する
- inetconv
- inetd.confに記述されたサービスをSMFサービスに変換・登録する
svcコマンド
- -a
- 全サービスリストを表示
- [FMRI]
- 指定されたFMRIの状況を表示
- -d
- 依存するサービスの一覧を表示
- -D
- 依存されるサービスの一覧を表示
- -l
- 詳細な情報を表示
- -x
- サービスの説明・状況を表示
- -p
- サービスとして稼働しているプロセスを表示
- -v
- 詳細。-xと一緒だと説明の詳細
- オプションなし
- 有効なサービス(disable)以外を一覧表示
svcadm
- [-v] enable [-t] [FMRI]
- サービスを有効にする
- [-v] disable [-t] [FMRI]
- サービスを無効にする
- [-v] restart [FMRI]
- サービスを再起動する
- [-v] refresh [FMRI]
- 設定ファイルを読みなおす
vは詳細モード。tは一時的に設定
svccfg
- validate [manifest]
- 指定したmanifest(xml)の内容を検査する
- [-v] import [manifest]
- 指定したmanifest(xml)ファイルをインポートしSMFに登録する
- export [FMRI]
- 指定したMFRIのmanifest(xml)を出力する
- delete [-f] [FMRI]
- 指定したFMRIのサービスをSMFから削除する
- -s [FMRI]
- 指定したFMRIのサービスをSMFのプロパティを編集する(対話モード)
validate以外の実行にはシステム管理者権限が必要になる
インポートしたサービスを削除しても、元になったmanifestは削除されない
インポートしたサービスを削除しても、元になったmanifestは削除されない
svcpropコマンド
- -v [FMRI]
- 指定したFMRIに設定されているプロパティを詳細モードで表示
- -C [FMRI]
- 指定したFMRIの現在のプロパティを表示する。構成外情報は表示しない
- -c [FMRI]
- 指定したFMRIの現在のプロパティを表示する。構成外情報も表示
- [FMRI]
- v [FMRI]と同じ
- -p [prop] [FMRI]
- 指定したFMRIの特定のプロパティのみ表示
inetadmコマンド
- -p
- inetdのプロパティを表示
- -l
- [FMRI]|指定したFMRIの詳細を表示
- -e [FMRI]
- 指定したFMRIを有効にする
- -d [FMRI]
- 指定したDMRIを無効にする
- -m [FMRI] {name=value}
- 指定したFMRIのプロパティを変更
inetconvコマンド
- -i [src]
- 指定したソースファイルを読みこんで処理を行う
- -n
- inetd.conf等からmanifestファイルは作成するがSMFへの組み込みを行わない
- -o
- manifestファイルの出力先となるディレクトリを指定
参考:Solaris10 サーバ構築バイブル
inetd.dの作成
Solaris10では起動にinetd.dを使わないとしてもMSFへの登録にはinetd.d的なファイルを読み込ませる必要がある。
inetd.dのフィールドの説明
- サービス名
- /etc/servicesに書かれているサービス名を記入するのがよい
- ソケットタイプ
- stream/dgram/xti
- プロトコル
- tcp/udp/xtiは絶対パス
- wait/swait/nowait
- wait...受け取った要求を処理するために1つのサーバを開始すると同時に、
- 同じサービスの新たな要求の受付を、開示したサーバが処理を終了するまで
- 止めるように、inetdに支持する
- swait...受信要求の受付を予期するように、inetdに支持すること以外は
- waitと同じ。
- nowait...inetdに受け取った要求に対し1つのサーバを開始するように支持する。
- 多くのUDPベースのサービスはこのフィールドにwaitを、またTCP
- ベースのサービスはnowaitを使用する。
- ユーザ
- サーバの実行時に使用するユーザ名または、ユーザID
- サーバプログラム
- サーバのソケットに接続要求があった場合に、inetdから実行されるプログラムの絶対パス名
- プログラム番号(NSF RPCサービスのみ)
- バージョン番号(NFS EPCサービスのみ)
- サーバプログラム引数
- サーバプログラムの引数。通常使用するものと同じで、プログラムの名前を表すarg[0]から記述。
例
http stream tcp nowait www /usr/local/apache2/bin/apachectl apachectl start
これを inetconvコマンドで
inetconv -i /tmp/init.d
みたいに今書いたファイルを指定してやると、SMFへ読み込んで処理を行う
inetconv -n -i /tmp/init.d
みたいにすると、manifestを作成するのみ