Наскільки часто файлова система Pro оновлюється в Linux?


33

Як часто procфайлова система оновлюється в Linux? Це 20 мілісекунд (квант часу)?


1
+1. Це чудове запитання домашніх завдань, яке потрібно задати учням. Спасибі.
Джонатан Бен-Аврахам

5
@ JonathanBen-Avraham Не соромтеся запитувати мета, чи дозволяє спільнота створити тег "чудового домашнього завдання" ... 8-)
Хоуке Лагінг

Відповіді:


46

Інформація, яку ви читаєте з файлової системи proc, не зберігається на жодному носії (навіть не в оперативній пам'яті), тому не можна нічого оновлювати.

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

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

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


Якщо вам потрібен доказ того, що ця відповідь відповідає дійсності, спробуйте запустити inotify на "файл" або каталог в / proc (або / sys з цього питання) ... це занадто погано, це зробило б udev абсолютно непотрібним, якщо ви можете просто сказати простий процес ініціації для запуску x, коли щось з’являється у y
технозавр

24

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

Можна сказати, це може не оновлюватися днями. Якщо ви не дивитесь на це. :-)


10
+1. Це трохи схоже на приказку: "Якщо дерево падає в ліс, і його ніхто не чує, чи він звучить?", Тобто "Якщо є файлова система Pro і ніхто її не читає, чи існує вона ? ".
Джонатан Бен-Аврахам

@ JonathanBen-Avraham Можна сказати, що про кожну ФС, чи не так? :-) Але майте на увазі, що доступ до процесів набагато більше, ніж можна було б здогадатися. Прокоментуйте це у fstab, перезавантажтесь, і все пекло
вирветься

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

4
Так кіт мертвий чи ні? Погляньте і подивіться. Це мертвий Джим. Бідна кішка.
0x7c0

@HaukeLaging У /proc/моєму файлі fstab у мене немає ☹
Привіт-Ангел,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.