クエリを処理できるサービスをLinuxで作成するには?

クエリを処理できるサービスをLinuxで作成するには?

私はLinuxサービスを作成し、それと通信できるようにしたいです。データを追加してインポートできるデータベースのようなものです。サービスをサーバーにせずにサービスと通信する方法はありますか?私の言葉は、データを送受信するためにhttp方法を使用しないことを意味します。https私が望むのは、URL番号を使用せずにサービスに接続する方法ですport

ベストアンサー1

あなたが探している答えは、次のものを使用することですシステムソケット

stdinで読んでstdoutに書くことができるプログラムがあるとしましょう。ソケットを介してアクセスするようにsystemdを設定できます。

これは、これを行うようにsystemdを設定する方法の例です。

# /etc/systemd/system/simple.socket
[Socket]
Accept=yes
ListenStream=11111

# /etc/systemd/system/[email protected]
[Unit]
Description="Simple service"
After=network.target simple.socket
Requires=simple.socket

[Service]
Type=simple
ExecStart=-cat -
StanardInput=socket
StandardOutput=socket

次にソケットを起動します。

$ sudo systemctl start simple.socket

これでソケットを設定してサービスを実行できます。私はこれのためにncorを使いますnetcat

$ nc 127.0.0.1 11111

私は単に標準入力を標準出力に渡すためにExecStart使用することにしました。cat -を実行すると、ncstdinに入力したすべての内容がstdoutに再エコーされることを確認できます。実行したいより興味深いアプリケーションがあるかもしれません。

他の素晴らしい点:

  • cat開いているソケットがない場合(ソケットは受信中ですがサービスは停止します)、実行されません。
  • 接続を確立するとサービスが開始されます。
  • 別の接続が行われると、サービスの別のインスタンスが開始されます。
  • 接続を閉じるとサービスが停止します。

おすすめ記事