Helix Coreサーバ管理者ガイド: 基本 (2019.1)

inetdから実行する

通常のインストールを行ったPerforceサービスは、Linux上で、ユーザからの接続要求を待つバックグラウンドプロセスとして動作します。接続があったときに初めてp4dを起動するようにするには、inetdp4d -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サービスファイルの例」を参照してください。