78 votes

Créer un répertoire sous /var/run au démarrage

J'avais un démon qui avait besoin de son propre répertoire dans le dossier /var/run pour son fichier PID avec le droit d'écriture accordé à l'utilisateur du démon.

J'ai trouvé que je pouvais créer ce répertoire avec ces commandes :

# mkdir /var/run/mydaemon

Ensuite, je pourrais changer sa propriété à l'utilisateur/groupe sous lequel je souhaite exécuter le processus :

# chown myuser:myuser /var/run/mydaemon

Mais ce dir disparaîtrait à chaque fois que je ferais un reboot ! Comment faire pour que ce répertoire soit créé à chaque fois que la machine démarre ?

124voto

snowdude Points 2790

Il y a deux alternatives pour que systemd crée des répertoires sous /var/run / /run .

En général, le plus simple est de déclarer un RuntimeDirectory dans le fichier de l'unité de votre service. Exemple :

RuntimeDirectory=foo

Cela créera /var/run/foo pour une unité de système. (Note : NE PAS fournir un chemin d'accès complet, seulement le chemin sous /var/run ) Pour la documentation complète, veuillez consulter l'entrée appropriée dans les docs systemd.exec .

Pour les répertoires d'exécution qui nécessitent une configuration plus complexe ou différente ou des garanties de durée de vie, utilisez tmpfiles.d et que votre paquet dépose un fichier /usr/lib/tmpfiles.d/mydaemon.conf :

#Type Path            Mode UID      GID    Age Argument
d     /run/mydaemon   0755 myuser myuser   -   -

Véase la documentation complète de tmpfiles.d ici .

7voto

J'ai créé un service qui fait le répertoire au démarrage :

vim /etc/systemd/system/mydaemon-helper.service

Le contenu 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

Puis j'ai commencé ce service :

systemctl start mydaemon-helper

systemctl status mydaemon-helper

Ausgabe:

[root@alpha 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.

Enfin, j'ai demandé au système de le charger au démarrage :

systemctl enable mydaemon-helper

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X