Munir'in bahsettiği tam olarak bunu nasıl yaptığınızdır. Temel olarak bir service
dosya oluşturur ve 30 kez başlatırsınız. Şimdi bu biraz tuhaf görünebilir, ancak yanlış davranırsa bunlardan birini kapatabilme ve hepsini kapatmak zorunda kalmamak gibi avantajları vardır. Ayrıca yönetimi kolaylaştırmak için yapabileceğiniz bazı şeyler vardır.
İlk olarak, birim dosyası. Gibi bir dosya oluşturun /etc/systemd/system/test@.service
. Önemli olan @
sembol.
İçeriği şöyle görünebilir:
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=multi-user.target
Sonra bunu başlatmak systemctl start test@1.service
, systemctl start test@2.service
.
Başlatılan işlemler şöyle görünecektir:
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
Başladığınız andan %I
sonra koyduğunuz şeyle değiştirildiğine dikkat edin @
.
Tüm 30'a küçük bir kabuk-fu ile başlayabilirsiniz:
systemctl start test@{1..30}.service
Ayrıca herhangi bir normal hizmeti gibi açılışta etkinleştirebilirsiniz: systemctl enable test@1.service
.
Şimdi, yönetimi kolaylaştırmak için yapabileceğiniz şeylerle kastettiğim: Belki de test@{1..30}.service
hepsini yönetmek için kullanmak istemezsiniz . Biraz hantal. Bunun yerine hizmetiniz için yeni bir hedef oluşturabilirsiniz.
Şununla oluştur /etc/systemd/system/test.target
:
[Install]
WantedBy=multi-user.target
Ardından, /etc/systemd/system/test@.service
şu şekilde görünecek şekilde ayarlayın :
[Unit]
StopWhenUnneeded=true
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=test.target
Systemd ile yeniden yükleyin systemctl daemon-reload
(yalnızca birim dosyasını değiştiriyorsanız gereklidir ve önceki sürümünü atlamıyorsanız). Ve şimdi yönetilmesini istediğiniz tüm hizmetleri yaparak etkinleştirin systemctl enable test@{1..30}.service
.
(Hizmeti daha önce olduğu gibi etkinleştirdiyseniz WantedBy=multi-user.target
, bağımlılığı temizlemek için önce devre dışı bırakın)
Şimdi yapabilirsiniz systemctl start test.target
ve systemctl stop test.target
30 işlemin tümünü başlatır / durdurur.
Ve yine, başka birim dosyası gibi açılışta etkinleştirebilirsiniz: systemctl enable test.target
.