Ich bin immer noch mit systemd fertig und bin auf etwas gestoßen. Es ist nicht so sehr ein Problem, aber ich würde gerne mehr darüber erfahren, wie das ist. Ich konnte anderswo keinen Hinweis darauf finden.
Zunächst einmal verstehe ich, dass benutzerdefinierte Einheitendateien für Dienste eingehen sollten /etc/systemd/system
. Für die Verwaltung unserer Server wäre es jedoch hilfreich, wenn sich die Gerätedateien an anderer Stelle befinden könnten.
In der Dokumentation habe ich gesehen, dass Sie Gerätedateien wie folgt "verknüpfen" können:
systemctl link /path/to/servicename.service
Dadurch wird ein Link zu den oben genannten in erstellt /etc/systemd/system
. Sie können diesen Dienst jetzt starten / stoppen. An der Oberfläche schien dies eine gute Möglichkeit für uns zu sein, unsere Dienstleistungen zu verwalten.
Der Versuch, eine solche "verknüpfte" Einheitendatei zu aktivieren, führt jedoch zu einem Fehler:
root@test1:/etc/systemd/system# systemctl link /root/myservice.service
Created symlink from /etc/systemd/system/myservice.service to /root/myservice.service.
root@test1:/etc/systemd/system# systemctl status myservice.service
* myservice.service - My Test Service
Loaded: loaded (/root/myservice.service; linked; vendor preset: enabled)
root@test1:/etc/systemd/system# systemctl enable myservice.service
Failed to execute operation: No such file or directory
Wenn Sie genau dieselbe Einheitendatei verwenden, die jedoch kopiert und /etc/systemd/system
nicht verlinkt wurde, erhalten Sie:
root@test1:/etc/systemd/system# cp -p /root/myservice.service .
root@test1:/etc/systemd/system# systemctl daemon-reload
root@test1:/etc/systemd/system# systemctl status myservice.service
* myservice.service - My Test Service
Loaded: loaded (/etc/systemd/system/myservice.service; disabled; vendor preset: enabled)
root@test1:/etc/systemd/system# systemctl enable myservice.service
Created symlink from /etc/systemd/system/multi-user.target.wants/myservice.service to /etc/systemd/system/myservice.service.
Aus diesem Grund scheint es nicht möglich zu sein, den Aufruf von in Einheitendateien verknüpften Dateien beim Systemstart zu aktivieren.
Wenn dies der Fall ist, wozu dient die Link-Funktionalität? Aus den Dokumenten geht hervor:
Link DATEINAME
Verknüpfen Sie eine Einheitendatei, die sich nicht in den Suchpfaden für Einheitendateien befindet, mit dem Suchpfad für Einheitendateien. Dies erfordert einen absoluten Pfad zu einer Einheitendatei. Der Effekt kann mit Deaktivierung rückgängig gemacht werden. Dieser Befehl bewirkt, dass eine Einheitendatei für den Start und andere Befehle verfügbar ist, obwohl sie nicht direkt im Einheitensuchpfad installiert ist.
systemctl enable
auch ausreichtsystemctl link
, sodass Sie die 2 Befehle nicht eingeben müssen ;-)Wenn Sie einen Dienst über einen anderen Pfad als die Standardpfade aktivieren, sollten Sie den vollständigen Pfad verwenden. Durch Aktivieren wird auch der Link für Sie erstellt:
Nach der Aktivierung können Sie mit dem Dienstnamen starten / stoppen / status
Ein paar Einschränkungen hier:
quelle