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