Чому кількість файлів-nr та lsof на відкритих файлах відрізняється? [зачинено]


19

Я зіткнувся з проблемою раптом; всі мої програми та сервер працювали нормально, і раптом я бачу, як кількість відкритих файлів піднімається.

Я перевіряю це за допомогою цієї команди:

cat /proc/sys/fs/file-nr

Коли я перевіряю це, це показує 44544 0 128000, тому 44544 - це кількість відкритих файлів.

Але коли я перевіряю цією командою - lsof | wc -l вона показує - 28384.

Отже, який з них правильний?

Моя максимальна кількість відкритих файлів - 65535

ulimit -a
open files                      (-n) 65535

Хочу знати топ-5 процесів, які використовують більш відкриті файли. Я можу це отримати, lsofале кількість показаних тут сильно відрізняється від іншої команди, про яку я згадував вище.

Чи можу я отримати детальну інформацію про процеси, які рахуються цією командою cat /proc/sys/fs/file-nr?

Згідно з наведеним нижче посиланням, він говорить, що ми не можемо, як відобразити відкриті дескриптори файлів, але не використовуючи команду lsof

Чи є навколо мене робота? Мені потрібно знайти, який процес почався з раптовішими відкритими файлами.

ОНОВЛЕННЯ Вибачте, хлопці за проблему. Я виявив помилку, яку я робив, Я НЕ перевіряв lsof | wc -l від root. тому я бачив величезну різницю.

все ж є різниця між виведенням файлу -nr та lsof | wc -l (від кореня). lsof кількість більше, ніж кількість файлів -nr. Причиною цього є те, що файл -nr ігнорує деякі каталоги (які lsof вважаються файлами). Я знайшов цю причину завдяки дослідженню лайла на самій Google. все одно! дякую хлопці за всю допомогу!



Чи lsof | wc -l справді відображається від’ємне число?
Джо Сьюелл

3
це не було негативним знаком, його дефісом!
Vasanth Nag KV

Відповіді:


8

Здається, тут грають два питання. По-перше, ви можете ознайомитись із повною документацією щодо файлових структур та файлів max

https://www.kernel.org/doc/Documentation/sysctl/fs.txt

Це визначає поля у цьому файлі як:

Три значення у file-nr позначають кількість виділених ручок файлів, кількість виділених, але невикористаних ручок файлів, та максимальну кількість ручок файлів. Linux 2.6 завжди повідомляє 0 як кількість вільних файлових ручок - це не помилка, це просто означає, що кількість виділених ручок файлів точно відповідає кількості використаних ручок файлів.

Сподіваємось, це досить зрозуміло. На друге питання відповіли у вищезгаданій темі ( /server/485262/number-of-file-descriptors-different-between-proc-sys-fs-file-nr-and-proc- пі ) і, здається, переходить до будь-якого

  1. "використовувати lsof" і фільтрувати висновок відповідним чином, якщо вам потрібно отримати гарне наближення дескрипторів файлів, які використовуються в процесі або,
  2. пройти через файлову систему / proc (і все ще доведеться фільтрувати вихід), щоб отримати знімок в часі використання дескриптора файлу.

Складність отримання точних показників для цього значна, оскільки кількість використовуваних ФД в будь-якій точці може дуже швидко коливатися в системі.

Наступний потік пропонує схему фільтрації підходу 'lsof':

/server/396872/why-or-how-does-the-number-of-open-file-descriptors-in-use-by-root-exceed-ulim


оновило моє запитання. але дякую за всю інформацію там.
Vasanth Nag KV

Але як це можливо, ніж ulimitдля мене каже, що я можу відкрити до 1024 файлів, якщо lsof | wc -lкаже, що я вже 1545?
Накілон

Будь ласка, прочитайте сторінки керівництва на lsofта ulimitвідповідь на своє запитання.
Thomas N
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.