各ポートモニターは、それぞれ 2 つの専用ディレクトリを持ちます。カレントディレクトリには、SAF で決められたファイル (_pmtab、_pid) と、サービスごとの構成スクリプト (作成した場合のみ) とがあります。ディレクトリ /var/saf/pmtag (pmtag はポートモニターのタグ) には、ポートモニターのプライベートファイルを入れることができます。
各ポートモニターは自分の管理ファイルを持っています。この管理ファイル内へサービスエントリを追加、削除、変更するには、 pmadm コマンドを使用します。 pmadm で管理ファイルを変更するたびに、対応するポートモニターはそのファイルを読み直します。ポートモニターの管理ファイルの各エントリでは、個々のポートの扱いと、そのポートで呼び出されるサービスを定義します。
どのタイプのポートモニターでも省略できないフィールドがあります。エントリには、サービスを一意的に識別するためのサービスタグと、サービスの起動時に割り当てられる ID、たとえば、root が必ず入っていなければなりません。
サービスタグとポートモニタータグを組み合わせると、サービスインスタンスが一意的に定義されます。別のポートモニターのサービスを指定する際に同じサービスタグを使用できます。レコードにはポートモニターに固有のデータも入っています。たとえば、ポートモニター ttymon の場合、ttymon にだけ必要なプロンプト文字列が入っています。ポートモニターのタイプごとに、ポートモニターの固有データを引数とし、そのデータを適当な形式で管理ファイルの中に書き出すコマンドが提供されていなければなりません。コマンド ttyadm は ttymon の形式を提供し、nlsadmin は listen の形式を提供します。 ユーザーが定義するポートモニターでも、同じような管理コマンドを提供する必要があります。
ポートモニター管理ファイルの各サービスエントリには、次の情報が次の形式で入っていなければなりません。
svctag:flgs:id:reserved:reserved:reserved:pmspecific# comment
SVCTAG はサービスを一意的に識別するタグです。タグは、サービスが提供されるポートモニターの中でのみ一意になるようにします。別のポートモニターのサービス (同一サービスまたは別のサービス) には、同じタグが付けられていてもかまいません。サービスを一意的に識別するには、ポートモニタータグとサービスタグの両方が必要です。
SVCTAG には、14 文字までの英数字が入ります。次の表にサービスエントリを定義します。
表 F–2 SVCTAG サービスエントリ
サービスエントリ |
説明 |
---|---|
FLGS |
このフィールドには、現在次のフラグを入れることができる -x を指定すると、このポートは有効にしない。デフォルトでは有効になる -u を指定すると、このサービスの utmpx エントリを作成する。デフォルトではサービスの utmpx エントリは作成されない |
ID |
サービスを起動するときの ID。ID は、 /etc/passwd に入っているログイン名と同じ形式を持つ |
PMSPECIFIC |
ポートモニター固有情報の例として、アドレス、実行するプロセスの名前、接続を渡す STREAMS パイプの名前が挙げられる。この情報はポートモニターのタイプごとに異なる |
COMMENT |
サービス呼び出し方法からみて、utmpx を作成するのが適当でない場合は、ポートモニターが -u フラグを無視します。サービスによっては、utmpx エントリが作成されていないと正しく起動できないものもあります。たとえば、login サービスです。
各ポートモニターの管理ファイルには、次の形式の特殊なコメントが入っていなければなりません。
# VERSION=value
ここで、value はポートモニターのバージョン番号を表す整数です。バージョン番号により、ポートモニターの管理ファイルの形式がわかります。このコメント行は、ポートモニターをシステムに追加したときに自動的に作成されます。これだけが 1 行となってサービスエントリの前に入ります。