(Merci à @Zulakis et à une réponse sur Serverfault pour avoir signalé que cette réponse n'avait pas suivi le développement en cours d'Ubuntu.)
Avec l'adoption de à systemd
partir de 15.04 , il est maintenant un mécanisme centralisé pour la création de fichiers temporaires et des répertoires tels que ceux - ci. Un service qui souhaite utiliser cette méthode peut supprimer des mkdir
commandes dans son propre script de démarrage et placer à la place d' un .conf
fichier /etc/tmpfiles.d
, /run/tmpfiles.d
ou /usr/lib/tmpfiles.d
, avec des services Ubuntu semblant préférer la dernière option. Par exemple, mon système a maintenant:
$ egrep -r /var/run /usr/lib/tmpfiles.d
/usr/lib/tmpfiles.d/var.conf:L /var/run - - - - ../run
/usr/lib/tmpfiles.d/sudo.conf:d /var/run/sudo 0711 root root
/usr/lib/tmpfiles.d/sudo.conf:D /var/run/sudo/ts 0700 root root
/usr/lib/tmpfiles.d/postgresql.conf:d /var/run/postgresql 2775 postgres postgres - -
/usr/lib/tmpfiles.d/sshd.conf:d /var/run/sshd 0755 root root
/usr/lib/tmpfiles.d/screen-cleanup.conf:d /var/run/screen 0775 root utmp
Le d
moyen de créer un répertoire s’il n’existe pas déjà, après le chemin d’accès et le reste, les autorisations, l’utilisateur et le groupe. Ces répertoires seront créés que le service correspondant soit ou non démarré.
Pour une documentation complète, voir man tmpfiles.d
.
ANCIENNE REPONSE PRE-SYSTEMD:
On dirait qu'ils sont créés dynamiquement par des services individuels au démarrage:
$ sudo egrep -r 'mkdir.*/var/run' /etc
/etc/init.d/ssh: mkdir /var/run/sshd
/etc/init.d/bind9: mkdir -p /var/run/named
/etc/init.d/timidity: mkdir -p /var/run/timidity
/etc/init.d/bzflag: mkdir -p /var/run/bzflag
/etc/init.d/dns-clean:mkdir /var/run/pppconfig >/dev/null 2>&1 || true
/etc/init/winbind.conf: mkdir -p /var/run/samba/winbindd_privileged
/etc/init/dbus.conf: mkdir -p /var/run/dbus
/etc/init/ssh.conf: mkdir -p -m0755 /var/run/sshd
/etc/init/libvirt-bin.conf: mkdir -p /var/run/libvirt
/etc/init/cups.conf: mkdir -p /var/run/cups/certs
Je crois que c'est celui qui gère mysqld:
[ -d /var/run/mysqld ] || install -m 755 -o mysql -g root -d /var/run/mysqld
/lib/init/apparmor-profile-load usr.sbin.mysqld
man install
indique que la forme -d créera "tous les composants des répertoires spécifiés".