Dans Ubuntus récent (en particulier, ce qui m’intéresse le plus, c’est 12.04), /var/run
c’est tmpfs, et donc je suppose qu’il commence vide à chaque redémarrage.
Pourtant, j'y vois des dossiers, comme /var/run/mysqld
et de nombreux autres. Comment ces dossiers créés à chaque redémarrage? Existe-t-il un dossier de modèle dans lequel est copié /var/run/
(et si oui, quel script le fait), ou chaque dossier mkdir
est édité séparément, ou quoi?
EDIT:
S'il vous plaît, ne répondez pas qui /var/run
est persistant, ou qui /run
est persistant. Parce que ce n'est pas.
Même s'il en est ainsi sur votre système, il ne l'est pas sur une version 12.04 normale.
boot
filesystem
Sandman4
la source
la source
Réponses:
(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 desmkdir
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: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:
Je crois que c'est celui qui gère mysqld:
man install
indique que la forme -d créera "tous les composants des répertoires spécifiés".la source
Le nouveau
/run
dossier monté sur tmpfs permet à des programmes tels que udev, lvm et mdadm de conserver les données d’exécution de initrd à l’arrêt./var
est un répertoire standard de tout système Linux / UNIX - il signifie "variable" et est un endroit où résident de nombreux journaux, cahces, MAIS aussi des fichiers de paramètres de variable de programme et même des bases de données de configuration système.La plupart des éléments
/var
doivent être correctement purgés et réglementés par le système. Vos fichiers d'échange pour la mémoire virtuelle sont également présents,/var
alors ne jouez pas avec ça./var/run
contient également un statut de lot et des informations sur les paramètres des démons de processus en cours d'exécution.Ce répertoire contient des informations sur le système décrivant le système depuis son démarrage. Les fichiers de ce répertoire doivent être effacés (supprimés ou tronqués selon le cas) au début du processus de démarrage. Les programmes peuvent avoir un sous-répertoire de
/var/run
; cela est encouragé pour les programmes qui utilisent plusieurs fichiers d'exécution.Eh bien depuis
/var/run
est monté en tant que tmpfs. Cela signifie que le disque est totalement vide au démarrage de votre machine et que cela est censé empêcher que des démons tels que les démons ne démarrent à cause d'un fichier PID restant.Les scripts de démarrage créent généralement les répertoires dont ils ont besoin avant de les utiliser. Si vous souhaitez stocker un fichier PID, insérez-le
/var/run
directement ou créez un répertoire avant de créer le fichier PID. Ce n'est pas un endroit pour stocker des données qui doivent rester là pendant les redémarrages.Sources: Chemin et Guide de l'administrateur système Linux
la source
Pour tous ceux qui rencontrent ce fil parce que vous cherchez une solution pour configurer une application de manière à ce qu'elle crée le répertoire
/var/run
afin qu'elle puisse stocker son fichier sock ou pid ou autre… voici un exemple. Je suis tombé sur ce fil parce que je voulais stocker le fichier de chaussette MySQL/var/run/mysqld
. Ainsi, après avoir découvert ce fil de discussion, j'ai commencé à chercher/etc/init
des exemples dans les fichiers. Dbus était un bon. Et, je suis venu avec cette configuration de démarrage mysql:La partie script pré-démarrage a fait l'affaire.
la source
Comme défini dans la norme de hiérarchie de fichiers, le
/var/run
ou/run
est utilisé pour stocker des données d'exécution volatiles.Tous les dossiers et fichiers créés sont gérés par le programme qui a créé les fichiers. Un dossier de modèle copié n'existe pas, chaque programme peut utiliser ce dossier pour stocker des informations volatiles. Les données stockées sont perdues au redémarrage du système.
Une chose courante pour l’utilisation du
/run
dossier est de stocker lespid
démons en cours, des fichiers de marqueurs contenant le numéro de processus d’un processus. Ils sont principalement utilisés pour les scripts de démarrage / arrêt que vous pouvez trouver par exemple dans/etc/init.d/
J'espère que cela vous a éclairé!
br
la source
Votre hypothèse n'est pas absolument correcte. L'emplacement du
/var
dossier est négociable. En d'autres termes, vous pouvez utiliser une autre partition ou un autre volume sur lequel localiser le/var
dossier. Quel que soit l'endroit où/var
se trouve le/var/run
dossier , le dossier est un lien symbolique vers le/run
dossier et son contenu reste après les redémarrages, même si de nombreux fichiers/run
sont générés ou modifiés au démarrage par les services démarrant au démarrage. Ce sont donc les services - tels quemysqld
- qui appellent le chargement de fichiers dans le/var/run
répertoire et sont configurés pour créer des sous-répertoires s’ils n’existent pas actuellement.la source
douggro a tout à fait raison, / var / run est monté en tant que tmpfs, et / var / run est un lien symbolique vers / run qui persiste après les redémarrages. courir.
Ainsi, tous les services de démarrage comme mysqld, qui est un démon démarré au moment du démarrage, qui crée des fichiers dans / run, auront également des fichiers visibles dans / var / run (lien symbolique vers / run Remember). Si vous souhaitez créer un fichier qui persistera après un redémarrage dans / var / run, créez-le dans / run, puis redémarrez.
J'espère que ça répond à ta question.
la source
tmpfs
est volatile et les changements sont perdus.