====== SMFを使用したサービスの起動/停止 ======
SMFでは、'FMRI'と呼ばれる「管理リソース識別子」を使用してサービスの起動・停止などの状態を管理します。
FMRIは、svcsコマンドを打った際に出力される以下のような記述(例えば、以下の"svc:/system/svc/restarter:default"等)の事を指します。
$ svcs
online 3月_31 svc:/system/svc/restarter:default
online 3月_31 svc:/system/filesystem/root:default
online 3月_31 svc:/network/loopback:default
online 3月_31 svc:/system/boot-archive:default
online 3月_31 svc:/network/physical:default
online 3月_31 svc:/system/filesystem/usr:default
~以下、省略~
===== サービスの状態確認 =====
* サービスの稼働状態確認。稼働している(onlineになっている)サービスを表示。
$ svcs
* サービスの稼働状態確認。全サービスを表示(稼働していないサービスも含む)
$ svcs -a
* サービス一覧と所属するプロセスを同時に表示
$ svcs -p
~省略~
online 3月_31 svc:/milestone/sysconfig:default
online 3月_31 svc:/system/system-log:default
3月_31 15272 syslogd
online 3月_31 svc:/system/utmp:default
3月_31 15276 utmpd
online 3月_31 svc:/system/sac:default
3月_31 15314 sac
3月_31 15323 ttymon
online 3月_31 svc:/network/inetd:default
3月_31 15291 inetd
online 3月_31 svc:/system/console-login:default
3月_31 15341 ttymon
online 3月_31 svc:/application/print/ppd-cache-update:default
* 特定のサービスについて詳細を確認。(例:svc:/network/inetd:default)
$ svcs -l svc:/network/inetd:default
fmri svc:/network/inetd:default
name inetd
有効 true
状態 online
next_state none
state_time 2008年03月31日 13時35分23秒
logfile /var/svc/log/network-inetd:default.log
リスタータ svc:/system/svc/restarter:default
contract_id 204392
dependency require_any/error svc:/network/loopback (online)
dependency require_all/error svc:/system/filesystem/local (online)
dependency optional_all/error svc:/milestone/network (online)
dependency optional_all/error svc:/network/rpc/bind (online)
dependency optional_all/none svc:/network/inetd-upgrade (disabled)
dependency require_all/none svc:/milestone/sysconfig (online) svc:/milestone/name-services (online)
→サービスの状態変更があった日時や、サービスの稼働状態を記録したログファイルなどがわかる。
* 特定のサービスの所属するプロセスを表示(例:Apache)
$ svcs -p http
STATE STIME FMRI
online 3月_31 svc:/network/http:cswapache2
3月_31 15440 httpd
3月_31 15441 httpd
3月_31 15442 httpd
3月_31 15443 httpd
3月_31 15444 httpd
3月_31 15445 httpd
3月_31 15446 httpd
3月_31 15447 httpd
3月_31 15448 httpd
* サービスに問題がある場合の状態説明を表示(例:Apache)
$ svcs -xv
svc:/network/http:cswapache2 (Apache 2 HTTP server)
状態: 2008年04月03日 14時40分51秒 以降maintenanceです
原因: 開始メソッドに繰り返し失敗しました。最後は 状態 1 で終了しました.
参照: http://sun.com/msg/SMF-8000-KS
参照: man -M /opt/csw/apache2/man -s 8 httpd
参照: http://httpd.apache.org
参照: /var/svc/log/network-http:cswapache2.log
影響: このサービスは動作していません。
設定ファイルの不具合などで起動が出来なかった場合には、上記コマンドで状態を確認後、さらに詳細の状況を確認するためには、「参照」に記載されているログファイル(ここでは'/var/svc/log/network-http:cswapache2.log’)を確認します。
===== サービスの起動 =====
例としてApacheのFMRIを使用します。
- 状態確認。$ svcs -a| grep http
disabled 12:02:38 svc:/network/http:cswapache2
- 上記で確認したサービス識別子(svc:/network/http:cswapache2)を用いてサービスを起動させる。$ sudo svcadm enable svc:/network/http:cswapache2
- 状態確認。サービスの状態がonlineになっていることを確認$ svcs -a| grep http
online 18:46:42 svc:/network/http:cswapache2
* 一意に識別が可能な場合にはサービス識別子(FMRI)の省略形も使用できます。
$ svcs http
$ sudo svcadm enable http
svcsは一般ユーザーでも実行可能ですが、svcadmの実行にはroot権限が必要です。
上記の例では、一般ユーザーからsudoコマンドを使用した例になっています。
===== サービスの停止 =====
例としてApacheのFMRIを使用します。
- 状態確認。$ svcs -a| grep http
online 12:02:38 svc:/network/http:cswapache2
- 上記で確認したサービス識別子(svc:/network/http:cswapache2)を用いてサービスを停止させる。$ sudo svcadm disable svc:/network/http:cswapache2
- 状態確認。サービスの状態がdisabledになっていることを確認$ svcs -a| grep http
disabled 15:13:00 svc:/network/http:cswapache2
====== Usage ======
=== 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 [-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 svc:/network/smtp:sendmail
svcadm network/smtp:sendmail
svcadm network/*mail
svcadm network/smtp
svcadm smtp:sendmail
svcadm smtp
svcadm sendmail