Что такое максимальное ограничение открытых файлов в Linux?
в Linux, когда процесс открывает файл, ОС проверяет максимальное ограничение открытых файлов.
Если ограничение было 1024, что означает число?
Это
- количество файлов, открытых процессом
- количество файлов, открытых пользователем, которому принадлежит процесс
- количество всех открытых файлов в ОС в настоящее время?
3 ответов
вы можете проверить мягкие и жесткие пределы вашей системы по .
- мягкие ограничения-это просто применяемые в настоящее время ограничения.
- жесткие ограничения отмечают максимальное значение, которое нельзя превысить, установив мягкий предел.
мягкие ограничения могут быть установлены любым пользователем, в то время как жесткие ограничения изменяются только root. Ограничения являются свойством a
это число открытых файлов дескрипторов в процессе. Все они могут относиться к одному и тому же файлу или разным файлам.
вы можете увидеть текущие пределы с ulimit -a
в оболочке или программно с getrlimit
. Общесистемные ограничения устанавливаются в /etc/security/limits.conf
.
объектная модель файловой системы в Linux:
file descriptor -> file description -> dentry -> inode
- дескриптор - это целое число, используемое приложение.
- описание файла - это структура данных ядра, к которому один или несколько файловые дескрипторы относятся.
- dentry - это имя файла. Один файл может иметь несколько имен (жестких ссылок).
- inode содержимое файла.
dup
создает новый дескриптор файла, описание файла.
open
создает новый дескриптор файла и описание файла.
в моем понимании это означает максимальное количество открытых файлов (дескрипторов) для каждого пользователя.
изменить: На самом деле, пределы.conf устанавливает это значение для каждого пользователя:
* hard nofile 1024
что означает жесткий предел для все пользователи (все как для каждого из них)
или он может быть установлен следующим образом:
myuser hard nofile 1024
что означает ограничение 1024 для myuser