Řešení 1:
Existují dvě alternativy, jak nechat systemd vytvořit adresáře pod /var/run
/ /run
.
Obvykle nejjednodušší je deklarovat RuntimeDirectory
v souboru jednotek vaší služby. Příklad:
RuntimeDirectory=foo
Tím se vytvoří /var/run/foo
pro systémovou jednotku. (Poznámka:NEUVEĎTE úplnou cestu, pouze cestu pod /var/run
) Úplné dokumenty naleznete v příslušné položce v dokumentaci systemd.exec.
Pro běhové adresáře, které vyžadují složitější nebo jinou konfiguraci nebo záruky životnosti, použijte tmpfiles.d
az vašeho balíčku pusťte soubor /usr/lib/tmpfiles.d/mydaemon.conf
:
#Type Path Mode UID GID Age Argument d /run/mydaemon 0755 myuser myuser - -
Úplné dokumenty tmpfiles.d naleznete zde.
Řešení 2:
Vytvořil jsem službu, která by na začátku vytvořila adresář:
vim /etc/systemd/system/mydaemon-helper.service
Obsah /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
Pak jsem spustil tuto službu:
systemctl start mydaemon-helper
systemctl status mydaemon-helper
Výstup:
[[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.
Nakonec jsem řekl systému, aby jej načetl při spuštění:
systemctl enable mydaemon-helper
-
Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?
-
Rozdíl mezi /var/log/messages, /var/log/syslog a /var/log/kern.log?
-
„Nelze vytvořit adresář mezipaměti /home//.composer/cache/repo/https—packagist.org/, nebo adresář není zapisovatelný. Pokračovat bez mezipaměti“?