Wir haben eine interne Anwendung mit systemd-Diensten, die wir außerhalb der normalen systemd-Verzeichnisse (/ etc / systemd / system und / usr / lib / systemd / system) bereitstellen möchten. Dieser Speicherort befindet sich auf einer anderen Festplatte (/ mnt / data im Beispiel).
Der systemd-Dienst wird aktiviert durch:
systemctl enable /mnt/data/sprinterd.service
Dadurch wird eine symbolische Verknüpfung in / etc / systemd / system erstellt
lrwxrwxrwx. 1 root root 27 Jun 20 22:47 sprinterd.service -> /mnt/data/sprinterd.service
Nach dem Neustart wird der Dienst nicht geladen, da die Gerätedatei nicht gefunden werden kann. Von journalctl zuerst ein Fehler, den der Dienst nicht laden konnte, dann der Mount der Festplatte, auf der sich das Gerät befindet.
Cannot add dependency job for unit sprinterd.service, ignoring: Unit sprinterd.service failed to load: No such file or directory.
systemd[1]: Mounted /mnt/data.
Aus / etc / fstab:
/dev/disk/by-uuid/c55e944f-5c63-48ad-8cd2-bd32d7b35c82 /mnt/data auto nosuid,nodev,nofail,x-gvfs-show 0 0
Der Vollständigkeit halber die Serviceeinheitsdatei:
[Unit]
Description=sprinterd
[Service]
Type=simple
Environment=TERM=linux
ExecStart=/srv/s1.erp/bin/sprinterd
Restart=always
RestartSec=5
KillSignal=SIGKILL
[Install]
WantedBy=multi-user.target
Ich habe dies auf RHEL 7 und auf openSuSE 13.2 getestet.
Wird es unterstützt, eine System Service Unit-Datei auf einer anderen Festplatte als / etc oder / usr zu haben? Wie kann die Ausführungsreihenfolge zwischen dem Mounten der Festplatte und dem Laden der systemd-Einheitendateien geändert werden?
systemdan dir, Stephen. Ich habe auch genau das gleiche Problem.
Requires=mnt-data.mount...