Lösung 1:
Es gibt zwei Alternativen, systemd Verzeichnisse unter /var/run
erstellen zu lassen / /run
.
Normalerweise ist es am einfachsten, eine RuntimeDirectory
zu deklarieren in der Unit-Datei Ihres Dienstes. Beispiel:
RuntimeDirectory=foo
Dadurch wird /var/run/foo
erstellt für eine Systemeinheit. (Hinweis:Geben Sie KEINEN vollständigen Pfad an, sondern nur den Pfad unter /var/run
) Vollständige Dokumente finden Sie im entsprechenden Eintrag in systemd.exec docs.
Verwenden Sie für Laufzeitverzeichnisse, die eine komplexere oder andere Konfiguration oder lebenslange Garantien erfordern, tmpfiles.d
und lassen Sie Ihr Paket eine Datei /usr/lib/tmpfiles.d/mydaemon.conf
ablegen :
#Type Path Mode UID GID Age Argument d /run/mydaemon 0755 myuser myuser - -
Die vollständige tmpfiles.d-Dokumentation finden Sie hier.
Lösung 2:
Ich habe einen Dienst erstellt, der das Verzeichnis beim Start erstellen würde:
vim /etc/systemd/system/mydaemon-helper.service
Der Inhalt von /etc/systemd/system/mydaemon-helper.service
:
[Unit]
Description=MyDaemon Helper Simple Service
After=network.target
[Service]
Type=simple
ExecStartPre=-/usr/bin/mkdir /var/run/mydaemon
ExecStart=/usr/bin/chown myuser:myuser /var/run/mydaemon
Restart=on-abort
[Install]
WantedBy=multi-user.target
Dann habe ich diesen Dienst gestartet:
systemctl start mydaemon-helper
systemctl status mydaemon-helper
Ausgabe:
[[email protected] etc]# systemctl status mydaemon-helper.service
● mydaemon-helper.service - MyDaemon Helper Simple Service
Loaded: loaded (/etc/systemd/system/mydaemon-helper.service; disabled; vendor preset: disabled)
Active: inactive (dead)
May 28 20:53:50 alpha systemd[1]: Starting MyDaemon Helper Simple Service...
May 28 20:53:50 alpha systemd[1]: Started MyDaemon Helper Simple Service.
Zuletzt habe ich dem System gesagt, es soll beim Start geladen werden:
systemctl enable mydaemon-helper