Jak często system plików proc jest aktualizowany w systemie Linux?

33

Jak często procsystem plików jest aktualizowany w systemie Linux? Czy to 20 milisekund (kwant czasowy)?

samarasa
źródło
1
+1. To jest świetne pytanie do odrabiania zadań domowych. Dzięki.
Jonathan Ben-Avraham
5
@ JonathanBen-Avraham Nie wahaj się zapytać na meta, czy społeczność pozwala ci utworzyć tag „wielka praca domowa” ... 8-)
Hauke ​​Laging
Zobacz także Co się stanie, gdy uruchomię polecenie cat / proc / cpuinfo?
Gilles „SO- przestań być zły”

Odpowiedzi:

46

Informacje odczytywane z systemu plików proc nie są przechowywane na żadnym nośniku (nawet w pamięci RAM), więc nie trzeba nic aktualizować.

Celem systemu plików proc jest umożliwienie programy przestrzeni użytkownika w celu uzyskania danych jądra lub ustawić za pomocą prostych i znanych systemów plików semantykę ( open, close, read, write, lseek), mimo że dane, które są odczytywane lub zapisywane nie znajdować się na dowolnym nośniku. Ta decyzja projektowa została uznana za lepszą (np. Czytelną dla człowieka i łatwą do skryptu) do pobierania i ustawiania danych, których formatu nie można określić z góry, niż wdrożenie czegoś takiego jak OID zakodowane w ASN1, co również działałoby dobrze.

Dane, które widzisz podczas odczytu z systemu plików proc, są generowane w locie, gdy czytasz od początku pliku. Oznacza to, że wykonanie odczytu powoduje, że dane są generowane przez funkcję wywołania zwrotnego jądra, która jest specyficzna dla odczytywanego pliku. Wykonanie czynności lseekna początku pliku i ponowne odczytanie powoduje kolejne wywołanie wywołania zwrotnego, które ponownie generuje dane. Podobnie, gdy piszesz do zapisywalnego pliku w systemie plików proc, wywoływana jest funkcja zwrotna, która analizuje dane wejściowe i ustawia zmienne jądra. Dane wejściowe w postaci surowej nie są przechowywane.

Powyższe jest tylko nieco bardziej szczegółowym sposobem wyrażenia tego, co Hauke ​​Laging tak zwięźle stwierdza. Proponuję zaakceptować jego odpowiedź.

Jonathan Ben-Avraham
źródło
Jeśli potrzebujesz dowodu, że ta odpowiedź jest prawdziwa, spróbuj uruchomić inotify na „pliku” lub katalogu w / proc (lub / sys, jeśli chodzi o tę sprawę) ... to szkoda, udev byłby całkowicie niepotrzebny, gdybyś tylko mógł powiedzieć prosty proces inotify, aby uruchomić x, gdy coś pojawi się w y
technozaur
24

Jest aktualizowany przy każdym dostępie. W tym momencie widzisz stan jądra. Dlatego rozmiar pokazany dla „plików” nie jest rzeczywistym rozmiarem. Rzeczywisty rozmiar może ulec zmianie i jest określany w momencie uzyskania dostępu do pliku.

Można powiedzieć, że może nie być aktualizowany przez kilka dni. Jeśli na to nie spojrzysz. :-)

Hauke ​​Laging
źródło
10
+1. To trochę tak, jak powiedzenie: „Jeśli drzewo spada w lesie i nikogo nie ma w pobliżu, aby go usłyszeć, to wydaje dźwięk?”, Tj. „Jeśli istnieje system plików proc i nikt go nie czyta, to czy istnieje? ? ”.
Jonathan Ben-Avraham
@ JonathanBen-Avraham Można to powiedzieć o każdym FS, prawda? :-) Należy jednak pamiętać, że dostęp do proc jest znacznie większy, niż można by się spodziewać. Skomentuj to na fstab, zrestartuj, a piekło rozpęta się ...
Hauke ​​Laging
Miałem na myśli to, że dane w systemie plików wspieranym przez media istnieją nawet wtedy, gdy nikt ich nie czyta w danym momencie. Nie powstaje w momencie czytania jak proc i sys. Masz rację, proc ma wielu czytelników. Jednak sys jest podobnym systemem plików, który można komentować z fstab, przynajmniej na mniejszych systemach i nadal działać Ok. Twoje zdrowie.
Jonathan Ben-Avraham
4
Więc kot jest martwy, czy nie? Spójrz i zobacz. To martwy Jim. Biedny kot.
0x7c0
@HaukeLaging Nie mam /proc/pliku fstab ☹
Hi-Angel