Was Munir erwähnte, ist genau, wie Sie dies tun. Grundsätzlich erstellen Sie eine service
Datei und starten sie 30 Mal. Das mag ein wenig unangenehm erscheinen, hat aber Vorteile, z. B. die Möglichkeit, einen von ihnen herunterzufahren, wenn er sich schlecht benimmt, und nicht alle herunterzufahren. Es gibt auch einige Dinge, die Sie tun können, um die Verwaltung zu vereinfachen.
Zunächst die Unit-Datei. Erstellen Sie eine Datei, z /etc/systemd/system/test@.service
. Das wichtige Bit ist das @
Symbol.
Der Inhalt könnte folgendermaßen aussehen:
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=multi-user.target
Dann starten Sie es mit systemctl start test@1.service
, systemctl start test@2.service
.
Die Prozesse, die gestartet werden, sehen folgendermaßen aus:
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
Beachten Sie, dass das Symbol durch das %I
ersetzt wurde, was Sie nach dem @
Start eingegeben haben.
Sie können alle 30 mit ein wenig Shell-Fu beginnen:
systemctl start test@{1..30}.service
Sie können sie auch beim Booten wie jeder normalen Dienst aktivieren: systemctl enable test@1.service
.
Nun, was ich mit Dingen gemeint habe, die Sie tun können, um das Management zu vereinfachen: Vielleicht möchten Sie nicht, dass Sie test@{1..30}.service
sie alle verwalten müssen. Es ist etwas unhandlich. Sie können stattdessen ein neues Ziel für Ihren Dienst erstellen.
Erstellen /etc/systemd/system/test.target
mit:
[Install]
WantedBy=multi-user.target
Dann stellen Sie das /etc/systemd/system/test@.service
so ein, dass es so aussieht:
[Unit]
StopWhenUnneeded=true
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=test.target
System neu laden mit systemctl daemon-reload
(nur erforderlich, wenn Sie die Unit-Datei ändern und die frühere Version nicht übersprungen haben). Aktivieren Sie jetzt alle Dienste, die Sie verwalten möchten systemctl enable test@{1..30}.service
.
(Wenn Sie den Dienst zuvor aktiviert hatten WantedBy=multi-user.target
, deaktivieren Sie ihn zuerst, um die Abhängigkeit zu beseitigen.)
Sie können jetzt systemctl start test.target
und ausführen systemctl stop test.target
, und alle 30 Prozesse werden gestartet / gestoppt.
Und wieder können Sie beim Booten wie jede andere Unit-Datei aktivieren:systemctl enable test.target
.