mehrere systemd units aktivieren

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
reox
Beiträge: 2460
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

mehrere systemd units aktivieren

Beitrag von reox » 13.12.2018 16:19:03

Ich habe ein Projekt welches aus mehreren systemd Units besteht. Diese haben auch alle untereinander abhängigkeiten (per WantedBy, bzw PartOf) und ich kann mit dem starten/stoppen der Hauptunit alle anderen ebenfalls starten/stoppen.
Allerdings müssen die Units ja auch mal aktiviert werden.

Ist das irgendwie möglich? Ich habe RequiredBy versucht, das klappt aber nicht. Die anderen Units bleiben weiterhin deaktiviert.

Hier ein Beispiel

Code: Alles auswählen

$ cat /etc/systemd/system/mainunit.service
[Unit]
Description=The main unit

[Service]
Type=oneshot
ExecStart=/bin/true
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target


$ cat /etc/systemd/system/slave.service
[Unit]
Description=A slave
PartOf=mainunit.service

[Service]
Type=oneshot
ExecStart=/bin/true
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
RequiredBy=mainunit.service


$ cat /etc/systemd/system/otherslave@.service
[Unit]
Description=Another poor slave
PartOf=mainunit.service

[Service]
Type=oneshot
ExecStart=/bin/true
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
DefaultInstance=foobar
RequiredBy=mainunit.service
Auch noch eine gute Frage ist, wie man mehrere DefaultInstance machen kann. Das geht scheinbar nur maximal mit einer.
Komme ich da um ein script nicht drum herum?

KP97
Beiträge: 3406
Registriert: 01.02.2013 15:07:36

Re: mehrere systemd units aktivieren

Beitrag von KP97 » 13.12.2018 20:04:37

Der Unterschied von start/stop zu enable/disable ist bekannt?
Damit die Units dauerhaft aktiv bleiben, mußt Du alle erst enablen, also mit
systemctl enable xxxxx.service

reox
Beiträge: 2460
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: mehrere systemd units aktivieren

Beitrag von reox » 13.12.2018 21:52:33

KP97 hat geschrieben: ↑ zum Beitrag ↑
13.12.2018 20:04:37
Der Unterschied von start/stop zu enable/disable ist bekannt?
Ja. Hab ich ja auch geschrieben: Wenn alle Units enabled sind, kann ich starten/stoppen indem man mainunit startet/stoppt.

Das problem ist: Wie kann ich alle Units auf einmal enablen? Ein systemctl enable mainunit aktiviert nur mainunit und nicht slave sowie otherslave@foobar.
Da ich aber auch otherslave@barfoo brauche, komme ich wohl um ein script nicht herum, welches folgendes macht:

Code: Alles auswählen

systemctl enable mainunit.service
systemctl enable slave.service
systemctl enable otherslave@foobar.service
systemctl enable otherslave@barfoo.service

KP97
Beiträge: 3406
Registriert: 01.02.2013 15:07:36

Re: mehrere systemd units aktivieren

Beitrag von KP97 » 14.12.2018 15:56:09

Nein, der Unterschied ist folgender:
1. systemctl start bzw. stop -> immer nur temporär für die gestartete Session, bei einem Neustart ist der Service wieder inaktiv
2. systemctl enable bzw. disable -> der Service wird dauerhaft zur Bootzeit aktiviert und bleibt es auch über Neustarts hinaus, bis er wieder disabled wird.
Man sieht ja auch, daß bei einem enable Links angelegt werden.

Das heißt also, Du mußt alle gewünschten Services einmal enablen, dann sollte es so laufen, wie Du das willst.

reox
Beiträge: 2460
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: mehrere systemd units aktivieren

Beitrag von reox » 14.12.2018 16:16:40

KP97 hat geschrieben: ↑ zum Beitrag ↑
14.12.2018 15:56:09
Das heißt also, Du mußt alle gewünschten Services einmal enablen, dann sollte es so laufen, wie Du das willst.
Ja eh ;) Nur die Frage ist, lassen sich system units auf einmal zusammen enablen?

Also anstelle von 5x systemctl enable .... nur einmal.

KP97
Beiträge: 3406
Registriert: 01.02.2013 15:07:36

Re: mehrere systemd units aktivieren

Beitrag von KP97 » 14.12.2018 16:30:58

Das weiß ich nicht, aber man systemd gibt evtl. Auskunft.
Aber so viel Aufwand ist das doch nun wirklich nicht, zumal man ja auch auf der Konsole kopieren kann und nur beim ersten Service tippen muß.
Wenn es denn einmal aktiviert ist, bleibt es doch auch so.

Antworten