In neueren Ubuntus (speziell, was mich am meisten interessiert, ist 12.04) /var/run
ist tmpfs, und daher gehe ich davon aus, dass es bei jedem Neustart leer wird.
Dennoch sehe ich dort einige Ordner /var/run/mysqld
und zahlreiche andere. Wie werden diese Ordner bei jedem Neustart erstellt? Gibt es einen Vorlagenordner, in den kopiert wurde /var/run/
(und wenn ja, in welches Skript mkdir
? ) Oder einen Ordner , der separat bearbeitet wurde, oder was?
BEARBEITEN:
Bitte, antworte nicht, dass /var/run
es persistent ist oder dass /run
es persistent ist. Weil es nicht ist.
Auch wenn es auf Ihrem System so ist, ist es auf einem regulären 12.04 nicht so.
boot
filesystem
Sandman4
quelle
quelle
Antworten:
(Vielen Dank an @Zulakis und eine Antwort auf Serverfault für den Hinweis, dass diese Antwort nicht mit Ubuntus laufender Entwicklung Schritt gehalten hat.)
Mit der Annahme der
systemd
ab 15.04 , gibt es jetzt einen zentralen Mechanismus für die Erstellung von temporären Dateien und Verzeichnisse wie diese. Ein Dienst wollen diese Methode verwenden , können entfernenmkdir
Befehle in seinem eigenen Startskript und stattdessen eine platzieren.conf
Datei in/etc/tmpfiles.d
,/run/tmpfiles.d
oder/usr/lib/tmpfiles.d
, mit Ubuntu Dienste die letzte Option zu bevorzugen scheinen. Zum Beispiel hat mein System jetzt:Das
d
Mittel, um ein Verzeichnis zu erstellen, wenn es noch nicht existiert, ist der Pfad, und der Rest sind die Berechtigungen, Benutzer und Gruppen. Diese Verzeichnisse werden unabhängig davon erstellt, ob der entsprechende Dienst jemals gestartet wurde.Eine vollständige Dokumentation finden Sie unter
man tmpfiles.d
.ALTE ANTWORT VOR DEM SYSTEM:
Sieht so aus, als würden sie beim Start dynamisch von einzelnen Diensten erstellt:
Ich glaube, das ist derjenige, der mit mysqld umgeht:
man install
sagt, dass das -d Formular "alle Komponenten der angegebenen Verzeichnisse erstellt".quelle
Der neue tmpfs-gemountete
/run
Ordner ermöglicht es Programmen wie udev, lvm und mdadm, Laufzeitdaten von initrd bis zum Herunterfahren beizubehalten./var
ist ein Standardverzeichnis für jedes Linux / UNIX-System - es steht für "Variable" und ist ein Ort, an dem sich viele Protokolle, Cahces, ABER auch Programmvariablen-Einstellungsdateien und sogar einige Systemkonfigurationsdatenbanken befinden.Die meisten Dinge
/var
sollten ordnungsgemäß durch das System gereinigt und geregelt werden. Ihre Auslagerungsdateien für den virtuellen Speicher befinden sich ebenfalls im Speicher/var
./var/run
Enthält außerdem viele Status- und Parameterinformationen zu aktiv ausgeführten Prozessdaten.Dieses Verzeichnis enthält Systeminformationsdaten, die das System seit dem Start beschreiben. Dateien in diesem Verzeichnis müssen zu Beginn des Startvorgangs gelöscht (entfernt oder entsprechend gekürzt) werden. Programme können ein Unterverzeichnis von haben
/var/run
; Dies wird für Programme empfohlen, die mehr als eine Laufzeitdatei verwenden.Naja da
/var/run
wird als tmpfs gemountet. Das bedeutet, dass Ihre Maschine beim Booten völlig leer ist und dies auch tun soll, um zu verhindern, dass Daten wie Daemons aufgrund einer verbleibenden PID-Datei nicht mehr gestartet werden.Startup-Skripte erstellen normalerweise die Verzeichnisse, die sie benötigen, bevor sie verwendet werden. Wenn Sie eine PID-Datei speichern möchten, legen Sie sie entweder
/var/run
direkt an oder erstellen Sie ein Verzeichnis, bevor Sie die PID-Datei erstellen. Hier können keine Daten gespeichert werden, die nach einem Neustart dort verbleiben müssen.Quellen: Pfadname und Linux-Systemadministratorhandbuch
quelle
Für alle, die auf diesen Thread stoßen, weil Sie nach einer Lösung suchen, wie Sie eine Anwendung so konfigurieren können, dass sie das Verzeichnis erstellt, in dem
/var/run
die SOCK- oder PID-Datei oder was auch immer gespeichert werden kann. Hier ein Beispiel. Ich bin auf diesen Thread gestoßen, weil ich die MySQL-Sock-Datei in speichern wollte/var/run/mysqld
. Nachdem ich auf diesen Thread gestoßen war, fing ich an, in den/etc/init
Dateien nach Beispielen zu suchen . dbus war gut. Und ich kam mit dieser MySQL-Startkonfiguration:Der Pre-Start-Skript-Teil hat den Trick gemacht.
quelle
Wie in dem definierten Datei Hierarchy Standard der
/var/run
oder/run
verwendet wird , um flüchtige Laufzeitdaten zu speichern.Alle dort erstellten Ordner und Dateien werden von dem jeweiligen Programm verwaltet, das die Dateien erstellt hat. Es gibt keinen Vorlagenordner, der kopiert wird. Jedes Programm kann diesen Ordner zum Speichern flüchtiger Informationen verwenden. Die gespeicherten Daten gehen beim Neustart des Systems verloren.
Für die Verwendung des
/run
Ordners ist es üblich, diepid
ausgeführten Daemons zu speichern , Markierungsdateien, die die Prozessnummer eines Prozesses enthalten. Sie werden hauptsächlich für die Start- / Stopp-Skripte verwendet, die Sie beispielsweise in finden/etc/init.d/
Ich hoffe das hat es dir klar gemacht!
br
quelle
Ihre Annahme ist nicht absolut richtig. Der Speicherort des
/var
Ordners ist verhandelbar. Sie können also eine andere Partition oder ein anderes Volume verwenden, auf dem bzw. dem der/var
Ordner gespeichert ist. Unabhängig davon, wo sich der/var
Ordner befindet, handelt es sich bei dem/var/run
Ordner um einen Symlink zu dem/run
Ordner. Der Inhalt bleibt nach dem Neustart erhalten, obwohl viele der darin enthaltenen Dateien/run
beim Booten von Diensten generiert oder geändert werden, die beim Booten beginnen. Es sind also die Dienste, zum Beispielmysqld
, die das Laden von Dateien in das/var/run
Verzeichnis erfordern und so eingerichtet sind, dass sie Unterverzeichnisse erstellen, wenn sie derzeit nicht vorhanden sind.quelle
douggro hat vollkommen recht, / var / run wird als tmpfs gemountet und / var / run ist ein Symlink zu / run, der über Neustarts hinweg persistent ist, sodass alles, was in / run eingeht, auch in / var / erscheint (und dort bleibt). Lauf.
Alle Boot-Dienste wie mysqld, bei denen es sich um einen beim Booten gestarteten Daemon handelt, der Dateien in / run erstellt, werden auch in / var / run angezeigt (symlink to / run remember). Wenn Sie eine Datei erstellen möchten, die nach einem Neustart in / var / run erhalten bleibt, erstellen Sie sie in / run und starten Sie sie anschließend neu.
Hoffe das beantwortet deine Frage.
quelle
tmpfs
ist volatil und Änderungen gehen verloren.