Что такое максимальное ограничение открытых файлов в Linux?

в Linux, когда процесс открывает файл, ОС проверяет максимальное ограничение открытых файлов.

Если ограничение было 1024, что означает число?

Это

  • количество файлов, открытых процессом
  • количество файлов, открытых пользователем, которому принадлежит процесс
  • количество всех открытых файлов в ОС в настоящее время?

3 ответов


вы можете проверить мягкие и жесткие пределы вашей системы по .

  1. мягкие ограничения-это просто применяемые в настоящее время ограничения.
  2. жесткие ограничения отмечают максимальное значение, которое нельзя превысить, установив мягкий предел.

мягкие ограничения могут быть установлены любым пользователем, в то время как жесткие ограничения изменяются только root. Ограничения являются свойством a


это число открытых файлов дескрипторов в процессе. Все они могут относиться к одному и тому же файлу или разным файлам.

вы можете увидеть текущие пределы с ulimit -a в оболочке или программно с getrlimit. Общесистемные ограничения устанавливаются в /etc/security/limits.conf.

объектная модель файловой системы в Linux:

file descriptor -> file description -> dentry -> inode
  1. дескриптор - это целое число, используемое приложение.
  2. описание файла - это структура данных ядра, к которому один или несколько файловые дескрипторы относятся.
  3. dentry - это имя файла. Один файл может иметь несколько имен (жестких ссылок).
  4. inode содержимое файла.

dup создает новый дескриптор файла, описание файла. open создает новый дескриптор файла и описание файла.


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

изменить: На самом деле, пределы.conf устанавливает это значение для каждого пользователя:

* hard nofile 1024

что означает жесткий предел для все пользователи (все как для каждого из них)

или он может быть установлен следующим образом:

myuser hard nofile 1024

что означает ограничение 1024 для myuser