Soluzione 1:
Ci sono due alternative per fare in modo che systemd crei le directory sotto /var/run
/ /run
.
In genere il modo più semplice è dichiarare un RuntimeDirectory
nel file unit del tuo servizio. Esempio:
RuntimeDirectory=foo
Questo creerà /var/run/foo
per un'unità di sistema. (Nota:NON fornire un percorso completo, solo il percorso sotto /var/run
) Per la documentazione completa, consultare la voce appropriata in systemd.exec docs.
Per le directory di runtime che richiedono configurazioni più complesse o diverse o garanzie a vita, utilizza tmpfiles.d
e fai in modo che il tuo pacchetto rilasci un file /usr/lib/tmpfiles.d/mydaemon.conf
:
#Type Path Mode UID GID Age Argument d /run/mydaemon 0755 myuser myuser - -
Consulta la documentazione completa di tmpfiles.d qui.
Soluzione 2:
Ho creato un servizio che creasse la directory all'avvio:
vim /etc/systemd/system/mydaemon-helper.service
Il contenuto di /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
Poi ho avviato questo servizio:
systemctl start mydaemon-helper
systemctl status mydaemon-helper
Uscita:
[[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.
Infine ho detto al sistema di caricarlo all'avvio:
systemctl enable mydaemon-helper