Лимит открытых файлов linux

How do I change the number of open files limit in Linux? [closed]

When running my application I sometimes get an error about too many files open . Running ulimit -a reports that the limit is 1024. How do I increase the limit above 1024? Edit ulimit -n 2048 results in a permission error.

I just went through this on Centos 7 (same on RHEL) and made a blog post covering it because I had so much trouble even with all these posts: coding-stream-of-consciousness.com/2018/12/21/…. Often along with open files, you need to increase nproc which actually resides in multiple settings files. and if you use systemd/systemctl that has its own separate settings. It’s kind of nuts.

4 Answers 4

You could always try doing a ulimit -n 2048 . This will only reset the limit for your current shell and the number you specify must not exceed the hard limit

Each operating system has a different hard limit setup in a configuration file. For instance, the hard open file limit on Solaris can be set on boot from /etc/system.

set rlim_fd_max = 166384 set rlim_fd_cur = 8192 

On OS X, this same data must be set in /etc/sysctl.conf.

kern.maxfilesperproc=166384 kern.maxfiles=8192 

Under Linux, these settings are often in /etc/security/limits.conf.

There are two kinds of limits:

  • soft limits are simply the currently enforced limits
  • hard limits mark the maximum value which cannot be exceeded by setting a soft limit

Soft limits could be set by any user while hard limits are changeable only by root. Limits are a property of a process. They are inherited when a child process is created so system-wide limits should be set during the system initialization in init scripts and user limits should be set during user login for example by using pam_limits.

There are often defaults set when the machine boots. So, even though you may reset your ulimit in an individual shell, you may find that it resets back to the previous value on reboot. You may want to grep your boot scripts for the existence ulimit commands if you want to change the default.

Читайте также:  Драйвер ядра virtualbox linux vboxdrv установить

Источник

3 способа изменить ограничение на количество открытых файлов в ОС Linux

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

Зачем суживать количество открытых файлов

Поскольку операционной системе требуется память для управления каждым файлом, вы сможете столкнуться с ограничением количества файлов, которые можно открыть. Поскольку программа также сможет закрывать обработчики файлов, она может создавать множество файлов любого размера, пока все вразумительное дисковое пространство не будет заполнено. В этом случае одним из аспектов безопасности является предупреждение исчерпания ресурсов путем введения ограничений.
В Linux существует два вида ограничений:

  • Soft Limit Свойство, которое может быть изменено процессом в любое время.
  • Hard Limit обозначает наибольшее значение, которое не может быть превышено путем установки мягкого ограничения

Вы можете увидать максимальное количество открытых файловых дескрипторов в вашей системе Linux, как показано ниже:
# cat /proc/sys/fs/file-max100576
Свойство показывает количество файлов, которые пользователь может открыть за сеанс входа в систему, но вы обязаны заметить, что результат может отличаться в зависимости от вашей системы. По некоторым причинам может понадобиться увеличить значение набора ограничений. Вот почему ваша система Linux предлагает возможность (повышая или уменьшая) изменять эти ограничения, изменяя максимальное количество открытых файлов на процесс и на систему.

Бригада ulimit

Команду ulimit можно использовать для увеличения количества файлов, которые можно раскрыть в оболочке. Эта команда является встроенной командой bash, поэтому она влияет только на bash и програмки, запускаемые из него. Синтаксис ulimit следующий:
Ulimit [options [limit]]
Параметры определяют, что довольствуется. Вы можете увидеть некоторые варианты, как показано ниже

  • -a (Передача текущих настроек): заставляет ulimit извещать о своих текущих настройках.
  • -f (Ограничения файлов) ограничивает размер файлов, которые могут быть сделаны оболочкой.
  • -n Ограничивает количество открытых файловых дескрипторов.
  • -H и -S (Жесткие и мягкие ограничения) параметры меняют другие параметры, в результате чего они устанавливаются как жесткие или мягкие ограничения соответственно. Жесткие ограничения смогут впоследствии не увеличиваться, но мягкие ограничения могут быть. Если ни один из вариантов не предусмотрен, ulimit ставит как жесткие, так и мягкие ограничения для указанной функции.
Читайте также:  Permission denied linux перевод

Итак, чтобы увидеть текущее ограничение, вы сможете сделать, как показано ниже:
$ ulimit — a | grep openopen files (-n) 1024
Вы можете проверить жесткий предел, как показано ниже:
$ ulimit — Hn4096
И мягкий предел, как показано ниже:
$ ulimit — Sn1024
Вы можете изменить ограничение, как представлено ниже
$ ulimit — n 3000
И вы можете проверить это ниже:
$ ulimit — n 3000
Проблема сейчас в том, что если вы выйдете из системы и войдете в систему или перезагрузите пк, значение будет сброшено. Помните, что для того, чтобы сделать эти ограничения более постоянными, нужно отредактировать один из файлов конфигурации пользователя ( .bashrc or .profile ) или общесистемные файлы конфигурации ( /etc/bashrc or /etc/profile ) приплюсовав командную строку ulimit в конец файла, как показано ниже.
# vim. bash_profileulimit — n 3000
Теперь, простонар если вы перезагрузитесь, ограничение, установленное пользователем, будет постоянным. Вы можете увеличить только твердый лимит ( -Hn ) или мягкий лимит ( -Sn ), но вы должны заметить, что мягкие ограничения могут быть установлены другым пользователем, в то время как жесткие ограничения могут быть изменены только пользователем root после его аппараты.

Модуль подключаемых модулей аутентификации (PAM)

Устанавливать такие ограничения лучше всего с помощью Включаемых модулей аутентификации (PAM), называемых Pam_limits. Большинство основных дистрибутивов Linux используют этот часть как часть своей стандартной конфигурации PAM, поэтому он уже присутствует в некоторых системах Linux, но вам нужно станет настроить его, отредактировав /etc/security/limits. conf файл. Этот файл содержит четыре главных поля:

  • Домен: Он описывает сущность, к которой применяется ограничение. Это может быть имя пользователя, заглавие группы (с формой @groupname) или подстановочный знак со звездочкой ( * ), который соответствует всем. Хотя вы должны заметить, что подстановочный знак не применяется к корневому пользователю
  • Тип: В этом поле указывается ограничение как безжалостное или мягкое. Жесткий лимит устанавливается системным администратором и не может быть превышен ни при каких жизненных обстоятельствах, в то время как пользователь может временно превысить мягкий лимит. Вы также можете использовать тире ( — ), дабы указать, что ограничение является как жестким, так и мягким. Обратите внимание, что мягкий лимит может быть повышен до значения жесткого лимита
  • Элемент: Он указывает, какой тип элемента ограничен. Это может быть Nofile (число открытых файлов данных), Fsize (размер файлов, созданных пользователем), Core (размер главных файлов) и т.д.
  • Значение: Оно указывает значение, которое должно быть применено к пределу
Читайте также:  Анализаторы трафика на linux

Вы можете увидать, например, содержимое этого файла, как показано ниже:

# tail — f — n 12 /etc/security/limits. conf # ##* soft core 0#* hard rss 10000#@student hard nproc 20#@faculty soft nproc 20#@faculty hard nproc 50#ftp hard nproc 0#@student — maxlogins 4# End of file

Дабы отредактировать максимальное количество открытых файлов для всех пользователей, вы можете добавить, например, приплюсовать в конец файла строки ниже:

# vim /etc/security/limits. conf* hard nofile 20000* soft nofile 15000

После данного вам необходимо отредактировать файл /etc/pam. d/login

# vim /etc/pam. d/loginsession required pam_limits. so

Затем сохраните файл. Вы сможете проверить результат, как показано ниже:

Общесистемный предел

В системе Linux у нас есть Файл-макс, какой является максимальным дескриптором файлов (FD), и настройки по умолчанию для ulimit и file-max предполагают, что несколько юзеров будут совместно использовать систему. Вот почему эти настройки ограничивают количество ресурсов, используемых любым пользователем. Вы можете увеличить количество открытых файлов в Linux, отредактировав /etc/sysctl. conf или путем редактирования директивы Fs. file-max

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

И вы можете менять значение по умолчанию, как показано ниже:

# sysctl — w fs. file-max=250000fs. file-max = 250000

Вы можете проверить итог, как показано ниже

С помощью Sysctl command, изменения применяются до следующей повторная загрузки. Чтобы сделать конфигурацию постоянной, вы можете напрямую отредактировать /etc/sysctl. conf файл, как представлено ниже:

# vim /etc/sysctl. conffs. file-max=250000

Если вы перечислите содержание /proc/sys/fs/file-max , вы увидите, что модифицирование не вступило в силу напрямую. Теперь вам нужно напрямую применить изменения с помощью опции — p бригады sysctl, как показано ниже:

# sysctl — pfs. file-max = 250000

Теперь конфигурация является постоянной.

Источник

Оцените статью
Adblock
detector