![Systemd テンプレートユニットインスタンスの順次停止](https://rvso.com/image/789288/Systemd%20%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%AE%E9%A0%86%E6%AC%A1%E5%81%9C%E6%AD%A2.png)
特定のポートで実行されているいくつかのサービスを開始/停止するために作成する必要があるテンプレート ユニットがあります。 のようなものです[email protected]
。[email protected]
[Unit]
After=network.target
PartOf=services.target
[Service]
ExecStart=app run --port %i
ExecStopPost=sleep 5
[Install]
WantedBy=multi-user.target
これらすべてのサービスを一度に管理するためのターゲットを作成しました。
cat services.target
[Unit]
[email protected] [email protected]
それはうまくいきます。それらはすべて同じ API を提供しているので、サービスを中断するには、同時に 1 つのプロセスのみを再起動します。
After
1 つの解決策として、で を使用することが考えられますunit template
が、実行中のプロセスの数は増減する可能性があるため、あまり柔軟ではありません。 1 つを削除すると、依存関係のチェーンが壊れる可能性があります...。 そのため、私が見つけた唯一の解決策は、 を間に挟んで、インスタンスを 1 つずつ停止/開始する bash スクリプトを作成することでした。 つまり、はとをsleep
使用できますが、... は使用できません。これは不便です。target
stop
start
restart
他にどのようなオプションがありますか? 使用できる可能性はありますかnotify
?