Apa yang disebutkan Munir adalah persis bagaimana Anda melakukan ini. Pada dasarnya Anda membuat service
file, dan memulainya 30 kali. Sekarang mungkin tampak sedikit tidak sehat, tetapi memiliki keuntungan, seperti bisa mematikan salah satu dari mereka jika itu bertingkah buruk, dan tidak harus mematikan semuanya. Ada juga beberapa hal yang dapat Anda lakukan untuk membuat manajemen lebih mudah.
Pertama, file unit. Buat file, seperti /etc/systemd/system/test@.service
. Bit yang penting adalah @
simbol.
Isinya mungkin terlihat seperti:
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=multi-user.target
Kemudian mulai dengan systemctl start test@1.service
, systemctl start test@2.service
.
Proses yang diluncurkan akan terlihat seperti:
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
Perhatikan bahwa %I
dapatkan diganti dengan apa pun yang Anda masukkan setelah @
ketika Anda memulainya.
Anda dapat memulai semua 30 dengan sedikit shell-fu:
systemctl start test@{1..30}.service
Anda juga dapat memungkinkan mereka pada boot seperti layanan normal: systemctl enable test@1.service
.
Sekarang, apa yang saya maksudkan dengan hal-hal yang dapat Anda lakukan untuk membuat manajemen lebih mudah: Mungkin Anda tidak ingin harus menggunakannya test@{1..30}.service
untuk mengelola semuanya. Agak berat. Anda bisa membuat target baru untuk layanan Anda.
Buat /etc/systemd/system/test.target
dengan:
[Install]
WantedBy=multi-user.target
Kemudian sesuaikan /etc/systemd/system/test@.service
sehingga terlihat seperti:
[Unit]
StopWhenUnneeded=true
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=test.target
Muat ulang systemd dengan systemctl daemon-reload
(hanya diperlukan jika Anda memodifikasi file unit, dan tidak melewatkan versi sebelumnya). Dan sekarang aktifkan semua layanan yang ingin Anda kelola systemctl enable test@{1..30}.service
.
(Jika sebelumnya Anda telah mengaktifkan layanan saat itu WantedBy=multi-user.target
, nonaktifkan dulu untuk menghapus ketergantungan)
Anda sekarang dapat melakukan systemctl start test.target
dan systemctl stop test.target
, dan itu akan memulai / menghentikan semua 30 proses.
Dan lagi, Anda dapat mengaktifkan boot seperti file satuan lainnya: systemctl enable test.target
.