ムニールが言ったことは、まさにあなたがこれを行う方法です。基本的にservice
ファイルを作成し、30回起動します。これは少し厄介に思えるかもしれませんが、動作に問題がある場合はそれらの1つをシャットダウンでき、すべてをシャットダウンする必要がないなどの利点があります。管理を簡単にするためにできることもいくつかあります。
まず、ユニットファイル。などのファイルを作成します/etc/systemd/system/test@.service
。重要なビットは@
シンボルです。
内容は次のようになります。
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=multi-user.target
その後でそれを起動しsystemctl start test@1.service
、systemctl start test@2.service
。
起動されるプロセスは次のようになります。
root 17222 19 0 0.0 0.0 Ss 00:05 /bin/sleep 600 1
root 17233 19 0 0.0 0.0 Ss 00:02 /bin/sleep 600 2
あなたがそれを開始した%I
後にあなたが置いたもので置き換えられたことに注意して@
ください。
30個すべてを小さなシェルフで開始できます。
systemctl start test@{1..30}.service
通常のサービスのように、起動時にそれらを有効にすることもできますsystemctl enable test@1.service
。
さて、管理を容易にするためにできることで私が意味したこと:test@{1..30}.service
すべてを管理するために使用する必要はないかもしれません。それは少し扱いにくいです。代わりに、サービスの新しいターゲットを作成できます。
で作成/etc/systemd/system/test.target
:
[Install]
WantedBy=multi-user.target
次に、/etc/systemd/system/test@.service
次のように調整します。
[Unit]
StopWhenUnneeded=true
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=test.target
systemdをリロードしsystemctl daemon-reload
ます(ユニットファイルを変更する場合にのみ必要で、以前のバージョンをスキップしませんでした)。そして今、あなたがすることによって管理したいすべてのサービスを有効にしますsystemctl enable test@{1..30}.service
。
(以前にサービスを有効にしていた場合はWantedBy=multi-user.target
、最初に無効にして依存関係をクリアします)
あなたは今できることsystemctl start test.target
とsystemctl stop test.target
、それはすべての30個のプロセスを開始/停止します。
繰り返しになりますが、他のユニットファイルと同様に起動時に有効にできますsystemctl enable test.target
。