Solaris 10 のサービス管理方法

最終更新日:2006年04月19日

SMF(Service Management Facility) によるサービス管理

管理コマンド

SMFの管理コマンドを以下に示す
コマンド 役割
svcs サービスの状態を表示する
svcadm サービスの有効化/無効化などを行う
svccfg 設定情報を読み書きする
svcprop サービスの設定情報(プロパティ)を表示する

svcsコマンドの主なオプション

svcsコマンドの主なオプションを以下に示す
コマンドオプション 内容
svcs -a 全サービスのリストを表示
svcs [FMRI] 状態が disabled 以外のサービスを表示。FMRIが指定されていればそのサービスを表示
svcs -p [FMRI] プロセス情報を含めて表示。FMRIが指定されていればそのサービスを表示
svcs -v [FMRI] verbose モード。STATE, NSTATE, STIME, CTID, FMRI を表示
svcs -d FMRI 自身が依存しているサービスを表示
svcs -D FMRI 自身に依存しているサービスを表示
svcs -l FMRI 詳細な情報を表示
svcs -x [FMRI] 各サービスの説明

また、"-\?"オプションで実行すると以下のヘルプが表示される
$ svcs -\?
使用法: svcs [-aHpv] [-o col[,col ... ]] [-R restarter] [-sS col] [<サービス> ...]
       svcs -d | -D [-Hpv] [-o col[,col ... ]] [-sS col] [<サービス> ...]
       svcs -l <サービス> ...
       svcs -x [-v] [<サービス> ...]
       svcs -?

        -a  使用可能になっているサービスインスタンスだけではなく、すべてのサービスインスタンスを表示します
        -d  指定されたサービスの依存関係を表示します
        -D  指定されたサービスの依存を表示します
        -H  出力からヘッダー行を省略します
        -l  指定されたサービスの詳細情報を表示します
        -o  出力のうち指定された列のみを表示します
        -p  各サービスに関連付けられたプロセス ID と名前を表示します
        -R  指定されたリスタータを持つサービスのみを表示します
        -s  指定された列の昇順に出力を並べ替えます
        -S  指定された列の降順に出力を並べ替えます
        -v  出力のタイプに応じて詳細情報を表示します
        -x  保守を必要とする可能性のあるサービスの状態を説明するか、
            または指定されたサービスの状態を説明します

        サービスは、FMRI、略記名、または fnmatch(5)
        パターンを使用して指定できます。以下の svc:/network/smtp:sendmail の例を参照してください

        svcs [opts] svc:/network/smtp:sendmail
        svcs [opts] network/smtp:sendmail
        svcs [opts] network/*mail
        svcs [opts] network/smtp
        svcs [opts] smtp:sendmail
        svcs [opts] smtp
        svcs [opts] sendmail

        出力またはソートのカラムはこれらの名前を使って指定できます:

        CTID    サービスの契約 ID (contract(4) を参照)
        DESC    人間が読むことのできるサービスの説明
        FMRI    サービスの障害管理リソース ID
        INST    FMRI で指定されているサービスインスタンスの部分
        N       次の状態の略記名 (遷移状態の場合)
        NSTA    次の状態の略記名 (遷移状態の場合)
        NSTATE  次の状態の名前 (遷移状態の場合)
        S       現在の状態の略記名
        SCOPE   サービスに関連付けられたスコープの名前
        SN      現在の状態と次の状態の略記名
        SVC     FMRI で表現されているサービス名の部分
        STA     現在の状態の略記名
        STATE   現在の状態の名前
        STIME   状態の最終変更時刻

svcadmコマンドの主なオプション

オプション無しでsvcadmコマンドを実行すると以下のヘルプが表示される
$ /usr/sbin/svcadm
使用法: svcadm [-v] [cmd [args ... ]]

        svcadm enable [-rst] <サービス> ...     - サービスを使用可能にしてオンラインにします
        svcadm disable [-st] <サービス> ...     - サービスを使用不可にしてオフラインにします
        svcadm restart <サービス> ...           - 指定されたサービスを再起動します
        svcadm refresh <サービス> ...           - サービスの設定を再度読み取ります
        svcadm mark [-It] <状態> <サービス> ... - 保守状態を設定します
        svcadm clear <サービス> ...             - 保守状態を消去します
        svcadm milestone [-d] <マイルストン>    - 特定のサービスマイルストンに進みます

        サービスは、FMRI、略記名、または fnmatch(5)
        パターンを使用して指定できます。以下の svc:/network/smtp:sendmail の例を参照してください

        svcadm <cmd> svc:/network/smtp:sendmail
        svcadm <cmd> network/smtp:sendmail
        svcadm <cmd> network/*mail
        svcadm <cmd> network/smtp
        svcadm <cmd> smtp:sendmail
        svcadm <cmd> smtp
        svcadm <cmd> sendmail

svccfgコマンドの主なオプション

svccfgコマンドの主なオプションを以下に示す
(svccfgコマンドをオプション無しで起動すると対話モードになる)
コマンドオプション 内容
svccfg export FMRI サービスの設定情報をXMLで標準出力に出力
svccfg import manifestファイル名 サービスの設定情報(manifestファイル)の登録
svccfg delete FMRI サービスの削除

svcpropコマンドの主なオプション

オプション無しでsvcpropコマンドを実行すると以下のヘルプが表示される
$ /usr/bin/svcprop
使用法: svcprop [-fqtv] [-C | -c | -s snapshot] [-p [name/]name]...
         {FMRI | パターン}...
       svcprop -w [-fqtv] [-p [name/]name] {FMRI | パターン}

サービスの確認方法

全サービスのリスト表示

書式
svcs -a
出力例
$ svcs -a
STATE          STIME    FMRI
legacy_run     13:33:18 lrc:/etc/rc2_d/S10lu
legacy_run     13:33:18 lrc:/etc/rc2_d/S20sysetup
legacy_run     13:33:18 lrc:/etc/rc2_d/S40llc2
  .
  .
  .
disabled       13:33:08 svc:/network/rpc/rex:default
disabled       13:33:09 svc:/network/rpc/spray:default
disabled       13:33:09 svc:/network/rpc/wall:default
  .
  .
  .
online         13:33:08 svc:/network/ntp:default
online         13:33:09 svc:/application/font/fc-cache:default
online         13:33:11 svc:/network/rpc/gss:default
  .
  .
  .
offline        13:33:10 svc:/application/print/rfc1179:default
offline        13:33:49 svc:/application/print/ipp-listener:default

指定したサービスのリスト表示

書式
svcs FMRI
出力例
$ svcs default
STATE          STIME    FMRI
disabled       13:33:08 svc:/network/rpc/rex:default
disabled       13:33:09 svc:/network/rpc/spray:default
disabled       13:33:09 svc:/network/rpc/wall:default
  .
  .
  .
online         13:33:08 svc:/network/ntp:default
online         13:33:09 svc:/application/font/fc-cache:default
online         13:33:11 svc:/network/rpc/gss:default
  .
  .
  .
offline        13:33:10 svc:/application/print/rfc1179:default
offline        13:33:49 svc:/application/print/ipp-listener:default

プロセス情報も含めて表示

書式
svcs -p [FMRI]
出力例
$ svcs -p
STATE          STIME    FMRI
  .
  .
  .
online         13:33:15 svc:/system/dumpadm:default
online         13:33:16 svc:/system/fmd:default
               13:33:16      318 fmd
online         13:33:16 svc:/network/ssh:default
               13:33:16      324 sshd
online         13:33:17 svc:/network/smtp:postfix
               13:33:17      357 master
               13:33:18      367 qmgr
               16:53:20     1121 pickup
online         13:33:20 svc:/milestone/multi-user:default
  .
  .
  .

依存しているサービスの表示

書式
svcs -d FMRI
出力例
$ svcs -d name-services
STATE          STIME    FMRI
disabled       13:33:44 svc:/network/ldap/client:default
disabled       13:33:44 svc:/network/rpc/nisplus:default
disabled       13:33:44 svc:/network/nis/client:default
online         13:33:56 svc:/network/dns/client:default

依存されているサービスの表示

書式
svcs -D FMRI
出力例
$ svcs -D name-services
STATE          STIME    FMRI
disabled       13:33:45 svc:/network/nfs/cbd:default
disabled       13:33:45 svc:/network/nfs/mapid:default
disabled       13:33:46 svc:/network/rpc/bootparams:default
online         13:33:13 svc:/network/nfs/client:default
online         13:33:14 svc:/system/filesystem/autofs:default
online         13:33:14 svc:/system/system-log:default
online         13:33:17 svc:/network/smtp:postfix
online         13:33:20 svc:/milestone/multi-user:default
online         13:33:57 svc:/system/cron:default
online         13:33:59 svc:/network/inetd:default

サービスの詳細情報表示

書式
svcs -l FMRI
出力例
$ svcs -l cron
fmri         svc:/system/cron:default
name         clock daemon (cron)
有効         true
状態         online
next_state   none
state_time   2005年07月25日 (月) 13時33分57秒
logfile      /var/svc/log/system-cron:default.log
リスタータ   svc:/system/svc/restarter:default
contract_id  34
dependency   require_all/none svc:/system/filesystem/local (online)
dependency   require_all/none svc:/milestone/name-services (online)

サービスの説明表示

書式
svcs -x FMRI
出力例
$ svcs -x cron
svc:/system/cron:default (clock daemon (cron))
 状態: 2005年07月25日 (月) 13時33分57秒 以降onlineです
   参照: cron(1M)
   参照: crontab(1)
   参照: /var/svc/log/system-cron:default.log
影響: ありません。

新規サービスの登録方法


postfixサービスを新規登録する手順を例に説明する。

manifestファイル作成

/var/svc/manifest/network/smtp-sendmail.xml を参考に、Postfix用manifestファイル smtp-postfix.xml を作成し、/var/svc/manifest/network/ に置く。

svccfgコマンドを使用して、
# svccfg export smtp > smtp-postfix.xml
でもsendmail用のmanifestファイルを取得できるが、コメント行が出力されないので、XMLファイルを直接参照した。

※ manifestファイルは、サービスのプロパティや依存関係などを定義したXMLファイル。

methodファイル作成

/lib/svc/method/smtp-sendmail を参考に、Postfix用methodファイル smtp-postfix を作成し、/lib/svc/method/ に置く。

※ methodファイルは、SMFで管理されているサービスの制御スクリプト。旧rcスクリプトに該当する。

rcスクリプト作成(必要に応じて)

/etc/init.d/sendmail を参考に、Postfix用rcスクリプト postfix を作成し、/etc/init.d/ に置く。

サービスの登録

svccfgコマンドでサービスをリポジトリ(管理データベース)に登録する
# svccfg import /var/svc/manifest/network/smtp-postfix.xml

サービスの起動/停止方法


上項で新規登録したpostfixサービスを例に説明する。

起動(ブート時に自動起動)

# svcadm enable postfix

停止(ブート時の自動起動停止)

# svcadm disable postfix

一時的に起動(ブート時の設定に影響しない)

# svcadm enable -t postfix
または(rcスクリプトが用意されている場合)
# /etc/init.d/postfix start

一時的に停止(ブート時の設定に影響しない)

# svcadm disable -t postfix
または(rcスクリプトが用意されている場合)
# /etc/init.d/postfix stop

設定ファイルの再読み込み

# svcadm refresh postfix
または(rcスクリプトが用意されている場合)
# /etc/init.d/postfix restart

状態の確認

# svcs -l postfix

サービスの削除方法

サービスの削除

postfixサービスをリポジトリ(管理データベース)から削除
# svccfg delete -f postfix
上記でサービスのリポジトリの登録は削除されるが、manifestファイルやmethodファイルは削除されないので、必要に応じて手動で削除する。

設定(プロパティ)の確認および変更方法

設定の確認方法

postfixサービスの全プロパティを表示
$ svcprop postfix
特定のプロパティグループのみ表示する場合は"-p"オプションを付ける。
generalプロパティグループを表示する場合の例
$ svcprop -p general postfix

設定の編集方法

新しいmanifestファイル(XMLファイル)をimportしても良いが、svccfgコマンドのeditpropサブコマンドで編集できる(起動するエディタはEDITOR環境変数に依存)。
変更する場合は、変更する行の行頭のコメント"#"を削除し、値を変更して保存する
# svccfg
svc:> select postfix
svc:/network/smtp:postfix> editprop

(EDITOR環境変数で指定したエディタ画面)
==================================================
select svc:/network/smtp:postfix

# Property group "main-file"
# delprop main-file
# addpg main-file dependency
# setprop main-file/entities = fmri: (file://localhost/etc/postfix/main.cf)
# setprop main-file/grouping = astring: (require_all)
   .
   .
   .
==================================================

svc:/network/smtp:postfix> quit

設定のロールバック方法

SMFで管理されているサービスの設定情報は履歴管理されており、revertサブコマンドを用いてロールバックする事が可能。
以下はpostfixサービスを初期状態に戻す場合の例
# svccfg
svc:> select postfix
svc:/network/smtp:postfix> listsnap
initial
last-import
running
start
svc:/network/smtp:postfix> revert initial
svc:/network/smtp:postfix> quit


inetdの管理方法は『SMFによるinetd管理方法』参照