Как часто proc
обновляется файловая система в Linux? 20 миллисекунд (квант времени)?
решение1
Информация, которую вы считываете из файловой системы proc, не сохраняется ни на каком носителе (даже в оперативной памяти), поэтому обновлять нечего.
Цель файловой системы proc — позволить программам пользовательского пространства получать или устанавливать данные ядра, используя простую и знакомую семантику файловой системы ( open
, close
, read
, write
, lseek
), даже если считываемые или записываемые данные не находятся на каком-либо носителе. Это решение по проектированию было признано лучшим (например, читаемым человеком и легко поддающимся скриптованию) для получения и установки данных, формат которых не мог быть указан заранее, чем реализация чего-то вроде закодированных ASN1 OID, которые также работали бы нормально.
Данные, которые вы видите при чтении из файловой системы proc, генерируются «на лету», когда вы выполняете чтение с начала файла. То есть, выполнение чтения приводит к генерации данных функцией обратного вызова ядра, которая относится к файлу, который вы читаете. Выполнение lseek
в начале файла и повторное чтение приводит к другому вызову функции обратного вызова, которая снова генерирует данные. Аналогично, когда вы записываете в записываемый файл в файловой системе proc, вызывается функция обратного вызова, которая анализирует входные данные и устанавливает переменные ядра. Входные данные в необработанном виде не сохраняются.
Вышеизложенное — это просто немного более многословный способ сказать то, что Хауке Лагинг говорит так лаконично. Я предлагаю вам принять его ответ.
решение2
Он обновляется при каждом доступе. Вы видите состояние ядра в этот момент. Вот почему размер, показанный для "файлов", не является реальным размером. Реальный размер может измениться и определяется в момент доступа к файлу.
Можно сказать, он может не обновляться несколько дней. Если вы не посмотрите его. :-)