Задать вопрос
buloshnik
@buloshnik
мужик

Как посмотреть количество открытых файлов в системе?

Здравствуйте,
столкнулся с непонятной ситуацией:
lsof | wc -l выдает 372,
cat /proc/sys/fs/nr_open выдает 1048576,
cat /proc/sys/fs/file-nr выдает 832 0 50170.
Вопрос в следующем - какие данные показывают правильно сколько открыто файлов в системе. Дело в том, что есть сервер на freebsd и там если я не ошибаюсь это можно посмотреть через sysctl kern.openfiles.
P.S. нужно это для настройки отправки сообщений, когда количество файлов допускает какой то определенный предел.
  • Вопрос задан
  • 23366 просмотров
Подписаться 5 Оценить 2 комментария
Решения вопроса 1
@custos
Открытые файлы показывает конечно же lsof, а параметры ядра больше касаются дескрипторов, эти конкретные, означают:
nr_open - жесткий лимит на открытые дескрипторы, более полезен параметр file-max - мягкий лимит.
file-nr - показывает выделенные дескрипторы, неиспользуемые и максимум, соответственно. Число выделенных дескрипторов больше, т.к. ядро их выделяет динамически и не освобождает, так что их число постоянно растет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Команда "lsof | wc -l" показывает гораздо большее значение, чем всего открыто файлов в системе на данный момент на самом деле.
Это связано с тем, что по несколько раз в подсчёт попадают одни и теже файлы, используемые разными процессами.
Для подсчёта общего числа открытых файлов лучше использовать первое значение в выводе команды "cat /proc/sys/fs/file-nr".
Либо, если всё же использовать lsof, то вывод придётся подвергать дополнительной обработке, убирая дубликаты.

Как проверить все открытые файлы пользователем или...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы