# 管理解説書

## bos create

目的

/usr/afs/local/BosConfig ファイルに新しいプロセスを定義して、実行を開始します。

構文

    bos create -server <machine name>  -instance <server process name>
               -type <server type>  -cmd <command lines>+
               [-notifier <Notifier program>]  [-cell <cell name>]
               [-noauth]  [-localauth]  [-help]

    bos c -s <machine name>  -i <server process name>  -t <server type>
          -cm <command lines>+  [-not <Notifier program>]  [-ce <cell name>]
          [-noa]  [-l]  [-h]

構文

bos create コマンドは、 -server 引き数で指定されたサーバー・マシン上の /usr/afs/local/BosConfig ファイルにサーバー・プロセス項目を作成し、プロセスの状況を BosConfig ファイルおよびメモリー内で Run に設定し、そのプロセスを開始します。

BosConfig ファイルのサーバー・プロセス項目には、サーバー・プロセスの名前、タイプ、初期化するコマンドが定義されます。またオプションで、プロセス終了時に実行する通知プログラム名が定義されます。

オプション

-server
  新規プロセスを定義し、開始するサーバー・マシンを指定します。 IP アドレスまたはホスト名 (完全修飾名または省略形) によってマシンを識別します。詳細については、bos コマンド・セットの概要の解説ページを参照してください。

-instance
  定義および開始するプロセス名を指定します。任意の名前を指定することができますが、説明を簡単にするために、ここでは、プロセスのバイナリー・ファイル・パス名の最後の部分を使用してください。この名前は、すべてのサーバー・マシンで使用してください。AFS のドキュメントで使用している規約名は次のとおりです。

  buserver
    バックアップ・サーバー・プロセス

  fs
    ファイル・サーバー、ボリューム・サーバー、およびサルベージャー・プロセス (fileserver、volserver、および salvager) を組み合わせたプロセス

  kaserver
    認証サーバー・プロセス

  ptserver
    保護サーバー・プロセス

  runntp
    ネットワーク時刻プロトコル・デーモンのコントローラー・プロセス

  upclientbin
    このマシンの CPU またはオペレーティング・システムのタイプに対応するバイナリー・ファイルの配布マシンの /usr/afs/bin ディレクトリーからバイナリー・ファイルを取り出す更新サーバー・プロセスのクライアント部分。 (バイナリー名は、upclient ですが、このプロセスを upclientetc と区別するために bin サフィックスが付いています。)

  upclientetc
    システム・コントロール・マシンの /usr/afs/etc ディレクトリーから構成ファイルを取り出す更新サーバーのクライアント部分。国際版 AFS を使用しているセルでは、このプロセスを実行しないでください。 (バイナリー名は、upclient ですが、このプロセスを upclientbin と区別するために etc サフィックスが付いています。)

  upserver
    更新サーバー・プロセスのサーバー部分

  vlserver
    ボリューム・ロケーション (VL) サーバー・プロセス

-type
  プロセスのタイプを指定します。許容値は次のとおりです。

  cron
    この値は、cron タイプのプロセスに指定します。このタイプのプロセスは、BOS サーバーがプロセスの終了を検出したときではなく、毎日または毎週決まった時刻にだけ始動します。デフォルトでは、AFS はこのプロセスを定義していませんが、この値を管理目的で使用することはできます。bos create コマンドの -cmd 引き数の一部として、コマンドの実行時刻を定義してください。

  fs
    この値は、fs プロセスにだけ使用してください。このプロセスは、ファイル・サーバー、ボリューム・サーバー、およびサルベージャー・プロセスを組み合わせたプロセスです。コンポーネントのプロセスが 1 つでも終了すると、BOS サーバーが終了し、適切な順序でプロセスを再始動します。

  simple
    この値は、fs プロセスを除く、-instance 引き数に指定可能な値としてリストされたすべてのプロセスに使用してください。simple プロセス間には相互依存性がないため、BOS サーバーは、必要に応じてプロセスを個々に終了または開始することができます。

-cmd
  BOS サーバーがプロセスを開始するために実行するコマンドを指定します。指定するコマンドの数は、多くても 6 つまでにしてください (これには、コマンドのオプションも含みます。この場合、文字列全体を二重引用符で囲みます)。それを超えて指定したコマンドは無視されます。

  simpleプロセスの場合には、ローカル・ディスクにあるプロセスのバイナリー・ファイルを完全なパス名で指定してください。(たとえば、保護サーバーの場合には /usr/afs/bin/ptserver) 初期化コマンドのオプションを使用する場合には、コマンド全体を二重引用符 (" ") で囲んでください。 upclient プロセスには必須の引き数があり、それ以外のプロセスに対するコマンドにはオプションの引き数があります。

  fs プロセスの場合には、各コンポーネント・プロセスごとにローカル・ディスク・バイナリーの完全なパス名を、fileserver、volserver および salvager の順に指定してください。標準のバイナリー・ディレクトリーは、/usr/afs/bin です。初期化コマンドのオプションを使用する場合には、コマンド全体を二重引用符 (" ") で囲んでください。

  cron プロセスの場合には、次の 2 つのパラメーターを指定してください。

  - 実行可能ファイルまたは AFS セットのコマンドのいずれかの完全なローカル・ディスク・パス名。(他に必要な引き数はすべて指定してください) このパラメーターにスペースが含まれている場合は、パラメーターを二重引用符 (" ") で囲んでください。
  - BOS サーバーが最初のパラメーターに指定されたファイルまたはコマンドを実行するときの仕様。次の 3 つの値が指定できます。
    - 文字列 now。この文字列を指定すると、 BOS サーバーはファイルまたはコマンドを即時に 1 度だけ実行します。コマンドを直接発行したり、bos exec コマンドを発行するほうが簡単です。
    - 時刻。BOS サーバーは、毎日指定された時刻にファイルまたはコマンドを実行します。時間と分をコロンで区切って指定します (hh:MM)。これは、24 時間形式で指定することも、am または pm を付けて、1:00 から 12:59 までの値の指定することもできます。たとえば、14:30 と "2:30 pm" は、どちらも午後 2 時 30 分を表しています。このパラメーターにスペースがある場合は、パラメーターを二重引用符 (" ") で囲んでください。
    - 曜日と時刻はスペースで区切り、二重引用符 (" ") で囲んでください。 BOS サーバーは、毎週指定された時刻にファイルまたはコマンドを実行します。曜日は、最初の 3 文字をすべて小文字で入力してください (sunday は sun、thursday は thu のように入力します)。時刻は、時刻だけを指定した場合と同じ形式になります。

-notifier
  プロセスが終了したときに、 BOS サーバーが呼び出すプログラムのローカル・ディスク上の完全なパス名を指定します。 AFS 配布には、通知プログラムが組み込まれていないが、この引き数は管理者が使用できるように用意されています。 関連情報の節を参照してください。

-cell
  コマンドを実行するセルを指定します。この引き数は、 -localauth フラグと一緒に使用してはなりません。詳細については、bos の解説ページを参照してください。

-noauth
  コマンドの発行側に非特権 ID anonymous を割り当てます。このフラグは -localauth フラグと一緒に使用してはなりません。詳細については、bos の解説ページを参照してください。

-localauth
  ローカルの /usr/afs/etc/KeyFile ファイルのキーを使用して、サーバー・チケットを構成します。 bos コマンド・インタープリターは、相互認証中に、このチケットを BOS サーバーに渡します。このフラグは、-cell 引き数または -noauth フラグと一緒に使用してはなりません。詳細については、bos の解説ページを参照してください。

-help
  このコマンドのオンライン・ヘルプを出力します。これ以外の有効なオプションはすべて無視されます。

例

次のコマンドは、マシン fs3.example.com に simple プロセス kaserver を定義し、開始しています。

       % bos create -server fs3.example.com -instance kaserver -type simple  \
                    -cmd /usr/afs/bin/kaserver

次のコマンドは、マシン fs4.example.com に simple プロセス upclientbin を定義し、開始しています。このコマンドは、バイナリー・ファイルに対する更新のソースとして、fs1.example.com を参照し、/usr/afs/bin ディレクトリーに対する変更を 120 秒ごとに検査しています。

       % bos create -server fs4.example.com -instance upclientbin -type simple  \
                    -cmd "/usr/afs/bin/upclient fs1.example.com -clear -t 120  \
                    /usr/afs/bin"

次のコマンドは、マシン fs4.example.com に fs プロセス fs を作成しています。このコマンドは、1 行に入力してください。

       % bos create -server fs4.example.com -instance fs -type fs  \
                    -cmd /usr/afs/bin/fileserver /usr/afs/bin/volserver  \
                    /usr/afs/bin/salvager

以下のコマンドは、userbackup と呼ばれる cron プロセスを、マシン fs5.example.com 上で作成します。その結果、BOS サーバーは、指示された vos backupsys コマンドを毎日 3:00 a.m. に発行します (このコマンドは、すべてのボリュームのバックアップ・バージョンを、名前が user で始まるファイル・システムに作成します)。 vos コマンドには完全なパス名を指定し、 -localauth フラグ付けて発行してください。また、bos create コマンドは、すべて 1行に入力してください。

       % bos create -server fs5.example.com -instance userbackup -type cron  \
                    -cmd "/usr/afs/bin/vos backupsys -prefix user -localauth" 03:00

必要となる特権

コマンドの発行側は、-server 引き数で指定されたマシンの /usr/afs/etc/UserList ファイルにリストされているか、または -localauth フラグが使用されている場合は、ローカル・スーパーユーザー root としてサーバー・マシンにログオンしている必要があります。

関連情報

プロセスの定義と開始を行うためにこのコマンドが使用されるときに、 -notifier 引き数が組み込まれている場合、 BOS サーバーは、プロセスが終了するときに、指示された 通知プログラム を呼び出します。通知プログラムの本来の用途は、プロセスが突然終了したときに、管理者に知らせることですが、それを使用して、任意の適切なアクションを実行することもできます。以下の段落では、BOS サーバーが、終了したプロセスについての情報をレコードしている bnode および bnode_proc 構造体について説明します。これに関連した AFS コマンドのリストも掲げます。

BOS サーバーは、通知プログラムと関連した各終了プロセスに対して、 1 つの bnode および 1 つの bnode_proc 構造体を構成して、標準出力ストリームで送信します。 BOS サーバーは、それぞれの構造体を適切な `BEGIN` および `END` ステートメント (`BEGIN bnode` と `END bnode`、 `BEGIN bnode_proc` と `END bnode_proc`) で囲みます。これは、スペースやほかの文字が介在しない直前の改行文字の直後に続きます。通知プログラムは、構造体からの情報を必要としない場合、 `END` ステートメントに到達するまで入力ストリームのスキャンを続けます。

一般に、構造体の各フィールドには、改行文字で終了している ASCII テキストの文字列が入っています。構造体内の情報の形式は、通知プログラムと関連したプロセスのタイプ次第で若干変化することがあります。

bnode および bnode_proc 構造体に対する C コードを以下に掲げます。 BOS サーバーによって送信される構造体は、ここで説明するフィールドを必ずしもすべて組み込んでいるわけではないということに注意してください。フィールドのいくつかは、内部レコードの保持のためのみに使用されるからです。通知プロセスは、標準入力ストリーム上の、予期しないフィールドの存在はもちろんのこと、予期されたフィールドの不在も確実に処理しなければなりません。

適切なパフォーマンスのために、通知プログラムは、入力ストリームのプロセッシングを、ファイル終わり (EOF) を検出するまで続けなければなりません。 BOS サーバーは、データの送達を完了すると、通知プロセスに対する標準入力ファイル記述子をクローズします。そして、適切に終了させるのは、通知プロセスの責任です。

struct bnode の内容

       struct bnode {
          struct bnode *next;      /* next pointer in top-level's list */
          char *name;              /* instance name */
          long nextTimeout;        /* next time this guy should be awakened */
          long period;             /* period between calls */
          long rsTime;             /* time we started counting restarts */
          long rsCount;            /* count of restarts since rsTime */
          struct bnode_type *type; /* type object */
          struct bnode_ops *ops;   /* functions implementing bnode class */
          long procStartTime;      /* last time a process was started */
          long procStarts;         /* number of process starts */
          long lastAnyExit;        /* last time a process exited for any reason */
          long lastErrorExit;      /* last time a process exited unexpectedly */
          long errorCode;          /* last exit return code */
          long errorSignal;        /* last proc terminating signal */
          char *lastErrorName;     /* name of proc that failed last */
          short refCount;          /* reference count */
          short flags;             /* random flags */
          char goal;               /* 1=running or 0=not running */
          char fileGoal;           /* same, but to be stored in file */
    };

struct bnode の出力形式

       printf("name: %s\n",tp->name);
       printf("rsTime: %ld\n", tp->rsTime);
       printf("rsCount: %ld\n", tp->rsCount);
       printf("procStartTime: %ld\n", tp->procStartTime);
       printf("procStarts: %ld\n", tp->procStarts);
       printf("lastAnyExit: %ld\n", tp->lastAnyExit);
       printf("lastErrorExit: %ld\n", tp->lastErrorExit);
       printf("errorCode: %ld\n", tp->errorCode);
       printf("errorSignal: %ld\n", tp->errorSignal);
       printf("lastErrorName: %s\n", tp->lastErrorName);
       printf("goal: %d\n", tp->goal);

struct bnode_proc の内容

       struct bnode_proc {
          struct bnode_proc *next; /* next guy in top-level's list */
          struct bnode *bnode;     /* bnode creating this process */
          char *comLine;           /* command line used to start this process */
          char *coreName;          /* optional core file component name */
          long pid;                /* pid if created */
          long lastExit;           /* last termination code */
          long lastSignal;         /* last signal that killed this guy */
          long flags;              /* flags giving process state */
    };

struct bnode_proc の出力形式

       printf("comLine: %s\n", tp->comLine);
       printf("coreName: %s\n", tp->coreName);
       printf("pid: %ld\n", tp->pid);
       printf("lastExit: %ld\n", tp->lastExit);
       printf("lastSignal: %ld\n", tp->lastSignal);

BosConfig

KeyFile

UserList

bos

buserver

fileserver

kaserver

ptserver

runntp

salvager

upclient

upserver

vlserver

volserver

vos backupsys

[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]

(C) IBM Corporation 2000. All Rights Reserved