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

SAP Sybase SQL Anywhere 16.0 » SQL Anywhere サーバ データベース管理 » SQL Anywhere データベース接続 » SQL Anywhere データベースサーバ » サービスまたはデーモンとしてデータベースサーバを実行する方法

 

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

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

注意

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

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

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

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

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

    dbspawn dbsrv16 demo

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

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

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



    #!/bin/csh
    # start the server as a daemon and ensure that it is
    # running before you start any applications
    dbspawn dbsrv16 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 dbsrv16 demo
    if [ $? != 0 ]; then
       echo Failed to start demo server
       exit
    fi
    # ok, now you can start the applications
    ...
  3. C プログラムの中からデーモンを生成する。-ud オプションを使用してください。次に例を示します。

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