UNIX データベースサーバをバックグラウンドで実行し、現在のセッションから独立して稼働させるには、データベースサーバを「デーモン」として実行します。
データベースサーバをバックグラウンドで実行するのに '&' を使用しない。データベースサーバをバックグラウンドで実行するのに UNIX の & (アンパサンド) コマンドを使用しても機能しません。サーバがただちに停止するか応答しなくなります。データベースサーバはデーモンとして実行してください。
同様に、一般的な fork()-exec()
シーケンスを使用してプログラムの中からサーバをバックグラウンドで起動しようとしても機能しません。これを行うには、データベースサーバオプションのリストに -ud オプションを追加します。
UNIX データベースサーバは、次のいずれかの方法でデーモンとして実行できます。
データベースサーバの起動時に、-ud オプションを使用する。次に例を示します。
dbsrv16 -ud demo |
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 ... |
C プログラムの中からデーモンを生成する。-ud オプションを使用してください。次に例を示します。
... if( fork() == 0 ) { /* child process = start server daemon */ execl( "/opt/sqlanywhere16/bin/dbsrv16", "dbsrv16", "-ud", "demo" ); exit(1); } /* parent process */ ... |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |