Cygserver はバックグラウンドサービスとして実行するように設計されたプログラムです。 Cygserver はセキュリティの調停や、他の Cygwin アプリケーションが実行されていなくとも持続しなければならないような Cygwin アプリケーションを支援します。
現在のところ、実装されているサービスは以下の通りです。
所有プロセスのセキュリティに対する妥協なしに、 tty の所有プロセスから分離されているスレーブ tty/pty ハンドルを制御する (原文: Control slave tty/pty handle dispersal from tty owner to other processes without compromising the owner processes' security.)
XSI IPC メッセージキュー
XSI IPC セマフォ
XSI IPC 共有メモリ
Cygserver のオプションでは、通常の UNIX で採用されている「-X」というスタイル、 或いは「--longoption」形式の両方が利用出来ます。 コマンドラインからの設定が不要な場合、殆ど全てのオプションの機能は設定ファイル(下記参照) 中の設定項目によって設定することも出来ます。コマンドラインオプションは Cygserver 設定ファイルでの設定内容よりも優先されます。
一文字のオプションは単一のダッシュに続きます。また、長いオプションは二つのダッシュに続きます。 以下では、オプションの引数は不等号記号(「<」及び「>」)で括って示します。 これらの不等号記号は実際の文法の一部ではなく、引数を示すためだけに利用されています。 全ての引数は必須であるという点に注意して下さい。Cygserver には、引数を指定してもしなくてもよいようなオプションはありません。
認識可能なオプションは以下の通りです。
-f, --config-file <ファイル>
デフォルトの設定ファイルの代わりに、<ファイル> を設定ファイルとして利用します。通常、デフォルトの設定ファイルは /etc/cygserver.conf です。--help 及び --version オプションはデフォルトの設定ファイルのパス名を表示します。
当然ですが、このオプションに対応する設定ファイル中の設定項目はありません。
-c, --cleanup-threads <数値>
クリーンアップ処理を行うために起動するスレッドの数を指定します。 デフォルトでは 2 です。設定ファイル中の項目は kern.srv.cleanup_threads です。
-r, --request-threads <数値>
アプリケーションからの要求に応えるスレッドの数を指定します。 デフォルトは 10 です。オプション -c 及び -r は低速なマシンや過負荷の状態において、Cygserver のパフォーマンスを調整するために利用することが出来ます。 設定ファイル中の項目は kern.srv.request_threads です。
-d, --debug
標準エラー出力にデバッグメッセージを出力します。 このオプションを利用した場合、大量の情報によって標準エラー出力が散らかされてしまいます。 通常、開発者のみが利用します。
-e, --stderr
ログを強制的に標準エラー出力に出力させます。 標準出力が tty に接続されている場合、これがデフォルトとなります。 そうでない場合、デフォルトでは syslog に対してログ出力が行われます。 オプション -e、-E、-y、-Y を利用すれば(或いは、設定ファイルで正しく設定すれば)、 ログ出力を好きなように制御することが出来ます。また、標準エラー出力と syslog の両方にログを出力させることも出来ます。 設定ファイル中の項目は kern.log.stderr です。
-E, --no-stderr
標準エラー出力に対してログを出力させません。 設定ファイル中の項目は kern.log.stderr です。
-y, --syslog
ログを強制的に syslog に出力に出力させます。 標準エラー出力が tty に接続されていない場合 (例えば、ファイルにリダイレクトされているような場合)、これがデフォルトとなります。 Windows 9x/Me では、syslog は C:\CYGWIN_SYSLOG.TXT として偽装されている点に注意して下さい。 設定ファイル中の項目は kern.log.syslog です。
-Y, --no-syslog
syslog に対してログを出力させません。 設定ファイル中の項目は kern.log.stderr です。
-l, --log-level <レベル>
ログ出力の冗長度を指定します。有効な値は 1 から 7 までです。 デフォルトの値は、比較的冗長な 6 となっています。 この値を 1 に設定すると、メッセージは Cygserver 自身が停止した場合のようなシビアな状況に限って出力されるようになります。 設定ファイル中の項目は kern.log.level です。
-m, --no-sharedmem
XSI IPC 共有メモリのサポートを行いません。 XSI IPC 共有メモリのサポートが不要な場合、このスイッチをオフにすることが出来ます。 設定ファイル中の項目は kern.srv.sharedmem です。
-q, --no-msgqueues
XSI IPC メッセージキューのサポートを行いません。 設定ファイル中の項目は kern.srv.msgqueues です。
-s, --no-semaphores
XSI IPC セマフォのサポートを行いません。 設定ファイル中の項目は kern.srv.semaphores です。
-S, --shutdown
実行中の Cygserver を停止して終了します。 また、Cygserver のプロセス ID を指定して SIGHUP を送ることによって Cygserver を停止させることも出来ます。 NT のサービスとして Cygserver を実行させている場合、「net stop cygserver」或いは「cygrunsrv -E cygserver」を利用することも出来ます。
-h, --help
利用方法を出力して終了します。
-v, --version
バージョン情報を出力して終了します。
初めて Cygserver を実行するのであれば、まず /usr/bin/cygserver-config スクリプトを実行するべきです。 このスクリプトはデフォルトの設定ファイルを作成し、必要に応じて Cygserver を NT のサービスとして実行させます。 Cygserver をサービスとして実行させる場合、このスクリプトはデフォルトのインストールのみを行います (それ以外のオプションは設定されません)。 通常は必要ありませんが、更なる設定を行うなら設定ファイルを確認して下さい。
Windows 9x/Me では、コンソールウィンドウから Cygserver を起動します。 標準エラー出力は適切なファイル(例えば /var/log/cygserver.log)にリダイレクトするか、オプション -e 及び -Y を利用するか、設定ファイルに適切な設定を行うべきでしょう(下記参照)。
Windows NT/2000/XP 及び 2003 では、Cygserver は常に LocalSystem アカウントで実行すべきです。/usr/bin/cygserver-config スクリプトでインストールすれば、このように設定されます。
Cygwin アプリケーションが Cygserver が提供するサービスを利用するには、環境変数 CYGWIN に文字列「server」が含まれていなければなりません。 この設定は、アプリケーションを起動する前に行う必要があります。
通常、他のオプションは必要ありません。従って、環境変数 CYGWIN にはただ単に「server」のみを設定すれば大丈夫です。Cygserver プロセスが開始する前に環境変数 CYGWIN を設定する必要はありませんが、設定せずにおく理由はないでしょう。
最も簡単な方法は、環境変数 CYGWIN を Windows のシステム環境変数として設定し、マシンをリブートすることです。 一旦設定してしまえば、後はそのことを忘れてしまっても構わないという意味で、この方法はお勧めです。 また、この方法であれば、サービスとデスクトップアプリケーションとで確実に同じ設定が使われることになります。
システム環境変数として設定したくない理由があるのなら、 デスクトップから Cygwin の bash を起動するために使われる /cygwin.bat ファイルで環境変数を設定することが出来ます。 このファイル中では、Windows のコマンドプロンプトが利用する構文で 環境変数 CYGWIN を設定出来ます。 例えば、次のようになります。
set CYGWIN=server
環境変数 CYGWIN をシステム環境変数として設定せずに他の Cygwin サービスを実行させている場合、 これらのサービスはインストール時に cygrunsrv のオプション「-e」によって設定された環境変数 CYGWIN から設定値を得なければなりません。サービス「foo」をインストールする場合の例を示します。
cygrunsrv -I foo -p /usr/sbin/foo -e "CYGWIN=server"
Cygserver には必要に応じてサーバをカスタマイズするための、様々なオプションが備わっています。 カスタマイズは設定ファイル(デフォルトでは /etc/cygserver.conf です)を編集することによって行われます。このファイルは cygserver の起動時に一回だけ読み込まれます。実行時にファイルを再度読み込ませるためのオプションはありません。 必要があれば、cygserver にシグナルを送って下さい。
設定ファイルは cygserver の動作を決定するためのものです。 並行動作するスレッドの数、どこへどのようにログを出力するか、IPC サービスにおける様々な最大値などを設定するためのオプションがあります。
cygserver と共に配布されるデフォルトの設定ファイルは /etc/defaults/etc にインストールされます。 /usr/bin/cygserver-config スクリプトはデフォルトの設定ファイルを /etc にコピーします(既存のファイルを上書きするか、それとも残しておくかを選択することも出来ます)。 これ以降にパッケージをアップデートしたとしても /etc に置かれたファイルは上書きされませんから、 貴方が設定ファイルに施した変更は安全に守られることになります。
デフォルトの設定ファイルには大量のコメントが含まれていますが、そこには設定内容を理解するために必要な事項が記述されています。 ファイルの先頭に記述されたコメントには、このファイルの構文規則が記述されています。 デフォルトのオプションはファイル中に記述されていますが、全てコメントアウトされています。
このファイル中では、デフォルトの値から変更したいオプションのコメントだけを外すべきです。 cygserver の起動時におけるオプションの読み込みには大した時間はかからないものの、ファイル中の他の全てのコメントは手を付けずにおくほうがよいでしょう。 他の場所から、問題の手がかりを探し出さなくともよくなります。