Wie oft wird das proc-Dateisystem unter Linux aktualisiert?

33

Wie oft wird das procDateisystem unter Linux aktualisiert? Ist es 20 Millisekunden (Zeitquant)?

Samarasa
quelle
1
+1. Dies ist eine großartige Hausaufgabenfrage, die die Schüler stellen sollten. Vielen Dank.
Jonathan Ben-Avraham
5
@ JonathanBen-Avraham Fühlen Sie sich frei, um auf Meta zu fragen, ob die Community es Ihnen ermöglicht, ein "großes Hausaufgaben" -Tag zu erstellen ... 8-)
Hauke ​​Laging
Siehe auch Was passiert, wenn ich den Befehl cat / proc / cpuinfo ausführe?
Gilles 'SO- hör auf böse zu sein'

Antworten:

46

Die Informationen, die Sie aus dem proc-Dateisystem lesen, werden auf keinem Medium gespeichert (auch nicht im RAM), sodass keine Aktualisierung erforderlich ist.

Der Zweck des proc - Dateisystem ist User - Space - Programme zu ermöglichen , zu erhalten oder Set - Kernel Daten , die die einfache und vertraute Dateisystem Semantik ( open, close, read, write, lseek), auch wenn die Daten , die gelesen oder geschrieben wohnt , nicht auf irgendwelchen Medien. Diese Entwurfsentscheidung wurde als besser (z. B. für Menschen lesbar und leicht skriptfähig) zum Abrufen und Festlegen von Daten angesehen, deren Format nicht im Voraus festgelegt werden konnte, als die Implementierung von z. B. ASN1-codierten OIDs, die ebenfalls gut funktioniert hätten.

Die Daten, die Sie sehen, wenn Sie aus dem proc-Dateisystem lesen, werden sofort generiert, wenn Sie vom Anfang einer Datei an einen Lesevorgang durchführen. Das heißt, beim Lesen werden die Daten von einer Kernel-Rückruffunktion generiert, die spezifisch für die Datei ist, die Sie lesen. Ein Tun lseekan den Anfang der Datei und liest wieder führt zu einem weiteren Aufruf der Rückruf, der die Daten erneut erzeugt. In ähnlicher Weise wird beim Schreiben in eine beschreibbare Datei im proc-Dateisystem eine Rückruffunktion aufgerufen, die die Eingabe analysiert und die Kernelvariablen festlegt. Die Eingabedaten in ihrer Rohform werden nicht gespeichert.

Das Obige ist nur eine etwas ausführlichere Art zu sagen, was Hauke ​​Laging so prägnant ausdrückt. Ich schlage vor, dass Sie seine Antwort akzeptieren.

Jonathan Ben-Avraham
quelle
Wenn Sie den Beweis brauchen, dass diese Antwort wahr ist, versuchen Sie, inotify für eine "Datei" oder ein Verzeichnis in / proc (oder / sys) auszuführen. Schade, es würde udev völlig überflüssig machen, wenn Sie nur sagen könnten ein einfacher inotify Prozess x , wenn etwas erscheint in y laufen
Technosaurus
24

Es wird bei jedem Zugriff aktualisiert. Sie sehen den Zustand des Kernels in diesem Moment. Aus diesem Grund entspricht die für die "Dateien" angegebene Größe nicht der tatsächlichen Größe. Die tatsächliche Größe kann sich ändern und wird bestimmt, sobald Sie auf die Datei zugreifen.

Man könnte sagen, es kann tagelang nicht aktualisiert werden. Wenn du es nicht anschaust. :-)

Hauke ​​Laging
quelle
10
+1. Es ist ein bisschen wie das Sprichwort: "Wenn ein Baum in einen Wald fällt und niemand da ist, um es zu hören, macht es einen Ton?", Dh "Wenn es ein Proc-Dateisystem gibt und niemand es liest, existiert es ".
Jonathan Ben-Avraham
@ JonathanBen-Avraham Das könnte man über jeden FS sagen, oder? :-) Aber denken Sie daran, dass es weit mehr Zugriffe auf proc gibt, als man vermuten würde. Kommentiere es in fstab aus,
starte neu
Ich meinte damit, dass die Daten in einem mediengestützten Dateisystem auch dann vorhanden sind, wenn sie zu einem bestimmten Zeitpunkt von niemandem gelesen werden. Es entsteht nicht im Moment des Lesens wie proc und sys. Du hast recht, proc hat viele Leser. Sys ist jedoch ein ähnliches Dateisystem, das Sie aus fstab heraus kommentieren können, zumindest auf kleineren Systemen, und trotzdem Ok ausführen können. Prost.
Jonathan Ben-Avraham
4
Ist die Katze also tot oder nicht? Schauen Sie mal rein. Es ist tot, Jim. Arme Katze.
0x7c0
@HaukeLaging Ich habe keine /proc/in meiner Fstab-Datei ☹
Hi-Angel