
通常の起動時に特定のポートでリッスンするプログラムがあります。
プログラムを実行し続けたくありません。
適切なポートを監視し、要求に応じてサービスを開始するためにシェルスクリプトなどにアプリケーションをラップする「高速で汚れた」方法はありますか?
最も簡単な方法は、ラッパーがポートを解放してからアプリケーションを起動する必要があるため、接続が失敗する可能性があります。クライアントが短時間だけ再接続すると、すべてがうまく機能します。
しかし、これらすべてが顧客に完全に透明になれば良いでしょう。
答え1
〜のようにRichardはすでに言及しています。、あなたが探しているのは長い間ありました。知られているイントラネット。
inetdにはいくつかの実装があります。いくつかは単純でソケットアクティベーションのみを行います(通常はinetd
他の基本的なネットワーキングツールを含むより大きなパッケージの一部であるプログラムです)。GNU inetutilsまたは忙しい箱またはLinuxに移植されたBSDツール)、一部はより多くの機能を提供します(シネットとても人気があり、ラインネットワーク独自に「非常に過剰な機能」と説明し、inetdに実装があります。システム(systemdが実装していないものは何ですか?)
ほとんどすべてのUNIXシステムにはinetd実装が付属しています。伝統的に、「コンパクト」サービス(例:echo、Finger、ftpなど)ではinetdを使用していましたが、「ラージ」サービス(例:httpd、NFS、ヘルパー、ssh)では使用しませんでした。デフォルトのサービス異常が必要ない場合は、ディストリビューションのデフォルトのinetd実装を使用してください。
答え2
systemdにソケット(TCP、UDP、またはunix AF)を開くように要求し、接続が受信されたらサービスを開始することもできます。すべてのサービスが既存のソケットを通過し、独自のソケットを生成することを好むわけではないため、systemdには、要求されたサービスがオンラインで正しいリスニングソケットを購入するまでsystemdが開いたソケットのコンテンツをバッファリングするsystemd-socket-proxydというヘルパーも含まれていますあります。