Как часто обновляется файловая система proc в Linux?


33

Как часто procобновляется файловая система в Linux? Это 20 миллисекунд (квант времени)?


1
+1. Это отличный домашний вопрос, который нужно задать студентам. Спасибо.
Джонатан Бен-Авраам

5
@ JonathanBen-Avraham Не стесняйтесь задавать вопросы о том, разрешает ли сообщество создавать тег «отличная домашняя работа» ... 8-)
Hauke ​​Laging

Ответы:


46

Информация, которую вы читаете из файловой системы proc, не хранится ни на одном носителе (даже в оперативной памяти), поэтому обновлять нечего.

Цель прока файловой системы , чтобы позволить Пользовательским программам для получения или набора данных ядра , используя простую и знакомую файловую систему семантики ( open, close, read, write, lseek), даже если данные , которые считываются или записываются не находятся на каком - либо носителе. Это проектное решение было сочтено лучшим (например, удобочитаемым и легким для написания сценариев) для получения и установки данных, формат которых нельзя было указать заранее, чем для реализации чего-либо, такого как OID в кодировке ASN1, что также работало бы хорошо.

Данные, которые вы видите при чтении из файловой системы proc, генерируются на лету, когда вы выполняете чтение с самого начала файла. То есть выполнение чтения приводит к тому, что данные генерируются функцией обратного вызова ядра, специфичной для файла, который вы читаете. Выполнение lseekв начале файла и повторное чтение вызывает еще один вызов обратного вызова, который снова генерирует данные. Точно так же, когда вы записываете в доступный для записи файл в файловой системе proc, вызывается функция обратного вызова, которая анализирует входные данные и устанавливает переменные ядра. Входные данные в необработанном виде не сохраняются.

Вышесказанное - лишь немного более многословный способ выразить то, что так лаконично говорит Хауке Лагинг. Я предлагаю вам принять его ответ.


Если вам нужно доказать, что этот ответ верный, попробуйте запустить inotify для «файла» или каталога в / proc (или / sys) - это очень плохо, это сделает udev совершенно ненужным, если вы просто скажете простой процесс inotify для запуска x, когда что-то появляется в y
technosaurus

24

Он обновляется при каждом доступе. Вы видите состояние ядра в тот момент. Вот почему размер, показанный для «файлов», не является реальным размером. Реальный размер может измениться и определяется в момент доступа к файлу.

Можно сказать, что он может не обновляться в течение нескольких дней. Если вы не смотрите на это. :-)


10
+1. Это немного похоже на поговорку: «Если дерево падает в лес, и его никто не слышит, издает ли он звук?», Т. Е. «Если есть файловая система proc и никто ее не читает, существует ли она? ?».
Джонатан Бен-Авраам

@ JonathanBen-Avraham Вы могли бы сказать это о каждой FS, не так ли? :-) Но имейте в виду, что доступ к proc гораздо больше, чем можно было бы предположить. Прокомментируйте это в fstab, перезагрузите компьютер, и весь ад вырвется на свободу ...
Hauke ​​Laging

Я имел в виду, что данные в файловой системе, поддерживаемой носителями, существуют, даже когда никто не читает их в любой конкретный момент. Он не появляется в момент чтения как proc и sys. Вы правы, у proc много читателей. Тем не менее, sys - это схожая файловая система, которую вы можете комментировать из fstab, по крайней мере, в небольших системах и по-прежнему запускать Ok. Приветствия.
Джонатан Бен-Авраам

4
Так кошка мертва или нет? Посмотри и посмотри. Это мертвый Джим. Бедная кошка.
0x7c0

@HaukeLaging У меня нет /proc/файла в моем файле fstab Hi
Привет, Ангел,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.