Как найти файловый дескриптор ulimit в Linux

У меня есть несколько серверов, на которых ulimit установлен как 65536, а в некоторых 200000. Не уверен, в зависимости от того, какой параметр он принимает, сослался на вопрос, заданный на [В Linux - установите максимальное количество открытых файлов на неограниченное. Возможно?

Но все еще не ясно, что определяет максимальный предел файловых дескрипторов, которые мы можем установить? Это зависит от памяти? Версия ОС или может быть что угодно. Или я могу поставить любое случайное число выше 1024?


person Niceha    schedule 19.02.2017    source источник
comment
И поскольку мы также можем редактировать /proc/sys/file-max, поэтому я никак не могу найти максимальное ограничение дескрипторов файлов, которое я могу установить, и система может поддерживать без каких-либо сбоев.   -  person Niceha    schedule 19.02.2017


Ответы (1)


Согласно справочной странице proc(5), sysctl fs.file-max применяется к количеству открытых файлов для всех процессов. Однако привилегированные процессы (CAP_SYS_ADMIN) могут переопределить ограничение максимального количества файлов.

Чтобы установить ограничение для каждого процесса, вы должны запустить setrlimit(2) с параметром RLIMIT_NOFILE. Помните о различиях между мягким ограничением и жестким ограничением.

person Ricardo Branco    schedule 19.02.2017
comment
у меня вопрос какой именно может быть лимит который я могу установить и от каких параметров он зависит? Как я понимаю, вы хотите сказать, что запуск команды setrlimit даст мне максимальное число, не так ли? потому что я не нашел такой команды - person Niceha; 21.02.2017
comment
setrlimit() — это системный вызов. Команда (встроенная из оболочки) — ulimit. Чтобы просмотреть мягкие ограничения: ulimit -a. Чтобы просмотреть жесткое ограничение: ulimit -Ha. Вы можете поднять мягкие пределы до жестких. Только суперпользователь может поднять свои жесткие ограничения. Чтобы установить ограничения для пользователя, вам нужно отредактировать файл /etc/security/limits.conf. Найдите сообщения об ошибках VFS: file-max limit ‹число› достигнуто в системном журнале, если ограничения слишком малы. Начальные значения зависят от объема доступной памяти. Запустите help ulimit, чтобы увидеть флаги, используемые для установки каждого ограничения. - person Ricardo Branco; 21.02.2017