Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー データベース管理 » データベースの開始とデータベースへの接続 » SQL Anywhere データベースサーバーの使用 » 現在のセッション外でのデータベースサーバーの起動

 

UNIX でのデーモンとしてのデータベースサーバー

UNIX データベースサーバーをバックグラウンドで実行し、現在のセッションから独立して稼働させるには、データベースサーバーを「デーモン」として実行します。

注意

データベースサーバーをバックグラウンドで実行するのに '&' を使用しない。データベースサーバーをバックグラウンドで実行するのに UNIX の & (アンパサンド) コマンドを使用しても機能しません。サーバーがただちに停止するか応答しなくなります。データベースサーバーはデーモンとして実行してください。

同様に、一般的な fork()-exec() シーケンスを使用してプログラムの中からサーバーをバックグラウンドで起動しようとしても機能しません。これを行うには、データベースサーバーオプションのリストに -ud オプションを追加します。

UNIX データベースサーバーは、次のいずれかの方法でデーモンとして実行できます。

  1. データベースサーバーの起動時に、-ud オプションを使用する。次に例を示します。

    dbsrv12 -ud demo
  2. dbspawn ツールを使用してデータベースサーバーを起動する。次に例を示します。

    dbspawn dbsrv12 demo

    dbspawn を使用することの利点は、デーモンが起動し、要求を受け入れる状態になったことを確認するまで dbspawn プロセスが停止しないことです。何らかの理由でデーモンの起動が失敗した場合、dbspawn の終了コードは 0 以外の値になります。

    -ud オプションを使用してデーモンを直接起動したときは、dbeng12 コマンドと dbsrv12 コマンドがデーモンプロセスを作成し、(終了して次のコマンドを実行できるように) すぐに返します。その後、デーモンがそれ自体を初期化するか、コマンドで指定されたデータベースを開こうとします。

    データベースサーバーを使用できる 1 つ以上のアプリケーションでデーモンが確実に実行されるようにしたい場合、アプリケーションの起動前にデーモンを実行する dbspawn を使用します。次の例では、csh スクリプトを使用してこれをテストする方法を示します。



    #!/bin/csh
    # start the server as a daemon and ensure that it is
    # running before you start any applications
    dbspawn dbsrv12 demo
    if ( $status != 0 ) then
       echo Failed to start demo server
       exit
    endif
    # ok, now you can start the applications
    ...

    次の例では、sh スクリプトを使用して、アプリケーションの起動前にデーモンが実行中であるかどうかをテストします。



    #!/bin/sh
    # start the server as a daemon and ensure that it is
    # running before you start any applications
    dbspawn dbsrv12 demo
    if [ $? != 0 ]; then
       echo Failed to start demo server
       exit
    fi
    # ok, now you can start the applications
    ...
  3. C プログラムの中からデーモンを生成する。次に例を示します。

    ...
    if( fork() == 0 ) {
          /* child process = start server daemon */
          execl( "/opt/sqlanywhere12/bin/dbsrv12",
    "dbsrv12", "-ud", "demo" );
       exit(1);
    }
    /* parent process */
    ...

    -ud オプションが使用されていることに注意してください。

 参照