Con quale frequenza viene aggiornato il file system proc su Linux?


33

Con quale frequenza viene procaggiornato il file system su Linux? Sono 20 millisecondi (tempo quantistico)?


1
+1. Questa è un'ottima domanda per i compiti da porre agli studenti. Grazie.
Jonathan Ben-Avraham,

5
@ JonathanBen-Avraham Sentiti libero di chiedere a meta se la community ti consente di creare un tag "ottimo compito" ...
Cool

Risposte:


46

Le informazioni che leggi dal filesystem proc non sono memorizzate su nessun supporto (nemmeno nella RAM), quindi non c'è nulla da aggiornare.

Lo scopo del file system proc è quello di consentire ai programmi in userspace di ottenere o di dati del kernel insieme utilizzando il semplice e il file system familiare semantica ( open, close, read, write, lseek), anche se i dati che vengono letti o scritti non risiedono su qualsiasi supporto. Questa decisione di progettazione è stata ritenuta migliore (ad esempio leggibile dall'uomo e facilmente scrivibile) per ottenere e impostare dati il ​​cui formato non poteva essere specificato in anticipo rispetto all'implementazione di qualcosa come gli OID codificati ASN1, che avrebbe anche funzionato bene.

I dati che vedi quando leggi dal filesystem proc sono generati al volo quando fai una lettura dall'inizio di un file. Cioè, facendo la lettura, i dati vengono generati da una funzione di callback del kernel specifica per il file che stai leggendo. Eseguendo lseekall'inizio del file e rileggendolo, si verifica un'altra chiamata al callback che genera nuovamente i dati. Allo stesso modo, quando si scrive in un file scrivibile nel filesystem proc, viene chiamata una funzione di callback che analizza l'input e imposta le variabili del kernel. I dati di input nella sua forma non elaborata non vengono memorizzati.

Quanto sopra è solo un modo leggermente più prolisso per dire ciò che Hauke ​​Laging afferma in modo così succinto. Ti suggerisco di accettare la sua risposta.


Se hai bisogno di prove che questa risposta è vera, prova a eseguire inotify su un "file" o directory in / proc (o / sys per quella materia) ... è troppo male, renderebbe udev completamente non necessario se solo potessi dire un semplice processo di inotify per eseguire x quando appare qualcosa in y
technosaurus

24

È aggiornato ad ogni accesso. Vedi lo stato del kernel in quel momento. Ecco perché la dimensione mostrata per i "file" non è la dimensione reale. La dimensione reale può cambiare e viene determinata nel momento in cui accedi al file.

Si potrebbe dire che potrebbe non essere aggiornato per giorni. Se non lo guardi. :-)


10
+1. È un po 'come il detto: "Se un albero cade in una foresta e nessuno è in giro per ascoltarlo, emette un suono?", Ovvero "Se esiste un file system proc e nessuno lo legge, esiste? ?".
Jonathan Ben-Avraham,

@ JonathanBen-Avraham Potresti dire questo su ogni FS, vero? :-) Ma tieni presente che ci sono molti più accessi a proc di quanto si possa immaginare. Commentalo in fstab, riavvia e si
scatena l'

Quello che intendevo dire era che i dati in un file system supportato dai media esistono anche quando nessuno li legge in nessun momento particolare. Non esiste al momento della lettura come proc e sys. Hai ragione, proc ha molti lettori. Tuttavia, sys è un filesystem simile che puoi commentare da fstab, almeno su sistemi più piccoli e comunque eseguire Ok. Saluti.
Jonathan Ben-Avraham,

4
Quindi il gatto è morto o no? Dai un'occhiata e vedi. È morto Jim. Povero gatto.
0x7c0,

@HaukeLaging Non ho il /proc/file nel mio file fstab ☹
Hi-Angel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.