Solución 1:
Hay dos alternativas para que systemd cree directorios bajo /var/run
/ /run
.
Por lo general, lo más fácil es declarar un RuntimeDirectory
en el archivo de la unidad de su servicio. Ejemplo:
RuntimeDirectory=foo
Esto creará /var/run/foo
para una unidad del sistema. (Nota:NO proporcione una ruta completa, solo la ruta debajo de /var/run
) Para ver los documentos completos, consulte la entrada correspondiente en los documentos de systemd.exec.
Para los directorios de tiempo de ejecución que requieren una configuración diferente o más compleja o garantías de por vida, use tmpfiles.d
y haga que su paquete suelte un archivo /usr/lib/tmpfiles.d/mydaemon.conf
:
#Type Path Mode UID GID Age Argument d /run/mydaemon 0755 myuser myuser - -
Vea los documentos completos de tmpfiles.d aquí.
Solución 2:
Creé un servicio que haría que el directorio comenzara:
vim /etc/systemd/system/mydaemon-helper.service
El contenido de /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
Luego inicié este servicio:
systemctl start mydaemon-helper
systemctl status mydaemon-helper
Salida:
[[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.
Por último, le dije al sistema que lo cargara al inicio:
systemctl enable mydaemon-helper