Helix Coreサーバ管理者ガイド: 基本 (2019.1)
inetdから実行する
通常のインストールを行ったPerforceサービスは、Linux上で、ユーザからの接続要求を待つバックグラウンドプロセスとして動作します。接続があったときに初めてp4d
を起動するようにするには、inetd
とp4d
-i
を使用して、/etc/inetd.conf
の後に次の行を記述します。
p4dservice stream tcp nowait username /usr/local/bin/p4d p4d -i -r p4droot
さらに、/etc/services
の後に次の行を記述します。
p4dservice nnnn /tcp
ただし、
- p4dservice は、このHelixサーバ用に選んだサービス名です
- /usr/local/binは、
p4d
のバイナリファイルを保持しているディレクトリです - p4droot は、このHelixサーバ用に使用するルートディレクトリ(
P4DROOT
)です(例えば、/usr/local/p4d
) - usernameは、このHelixサーバを動作させるために使用するUNIXユーザ名です
- nnnnは、このHelixサーバが使用するポート番号です
/etc/inetd.conf
行に、もう1つp4d
を指定する必要があります。inetd
は、これをargv[0]
としてOSに渡します。最初の引数は-i
フラグです。このフラグを指定すると、p4d
は、バックグラウンドプロセスとして動作するのではなく、stdin/stdout上でp4dに接続された単一のクライアントを処理します。これは、inetd
によって起動されるサービスで使用される方法です。
この方法は、起動スクリプトからp4d
を実行する方法の代わりとなるものです。特別なサービスの提供にも利用することができます。例えば、Perforceでは、UNIX上で動作するテストサーバが多数あり、それぞれが独自のポート番号を持つinetd
サービスとして定義されています。
この方法には、注意すべき点があります。
- inetdは過度な接続を許可しないことがあるので、数千の
p4
コマンドを呼び出し、その各々がinetd
を介してp4d
のインスタンスを生じるようなスクリプトを使用した場合、inetd
によってサービスが一時的に使用できなくなることがあります。システムによっては、inetd
の設定を変更して、この限度を無視するか引き上げる必要があります。 - 毎回
p4d
実行ファイルが実行されるため、簡単にサーバを使用不可にすることができなくなります。サーバを無効にするには、/etc/inetd.conf
を修正し、inetd
を再起動する必要があります。 - このライセンスでHelixサーバを使用するには、ポートを指定しないサーバライセンスの要求が必要となります。詳しくは、Perforceライセンス担当にお問い合わせください。
Note
サービス開始時のsystemd
の使用と起動時のデーモンについては、サポートナレッジベースの記事「systemdを使用したPerforceサービスファイルの例」を参照してください。