揮発性のメモ2

http://d.hatena.ne.jp/iww/

systemdで、socketを使ってエコーサーバを立てる 最小のユニットファイル

xinetdの代わりに。 次の2つのユニットファイルを同じ場所に作って登録する

hogehoge.socket
[Unit]
Description=HOGEHOGE Echo Server Socket

[Socket]
ListenStream=0.0.0.0:16000
Accept=yes

[Install]
WantedBy=sockets.target

hogehoge@.service

[Unit]
Description=HOGEHOGE Echo Server Service

[Service]
ExecStart=/bin/cat
StandardInput=socket
StandardOutput=socket
StandardError=journal

[Install]
WantedBy=hogehoge.socket
ListenStream
待ち受けポート。何行でも書くことができる。ポート番号だけを書くと IPv6に割り当てられるので、IPv4で待ちたいときは0.0.0.0を忘れずに書く
Accept=yes
yesにしたとき、着信したときに着信ソケットが作られて新しいサービスに受け継がれる。noだとリッスンポートが渡されるらしい。 xinetdの代わりに使うならyes
ExecStart=/bin/cat
起動されるプログラム名
StandardInput=socket
標準入力を選択。 デフォルトはnull
StandardOutput=socket
標準出力を選択。 デフォルトはnull
StandardError=journal
標準エラー出力を選択。 デフォルトはnull
WantedBy=hogehoge.socket
依存関係的なやつ。 multi-user.target でも普通に動くけど、ちゃんとソケットを指定するのが礼儀らしい
systemctl enable /foo/bar/hogehoge.socket
systemctl enable /foo/bar/hogehoge@.service
systemctl start hogehoge.socket

ソケットを有効化・実行する。
ソケットの名前に@をつけたサービスが暗黙で呼ばれる


systemd.socket
systemd.exec
systemdのsocketを使ってserverを作る - Qiita