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

Опубликовано: 5 Октября, 2022

Если вы являетесь активным пользователем Linux, которому приходится работать со многими файлами в Linux одновременно, вы наверняка сталкивались с проблемой «Слишком много открытых файлов» в системе Linux. Когда вы достигнете максимального количества открытых файлов, вы получите сообщение об ошибке «Слишком много открытых файлов (24)» на вашем экране.

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

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

Типы открытых файлов Ограничение

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

Существует 2 типа лимита открытых файлов:

  • Жесткие значения файловых дескрипторов.
  • Мягкие значения файловых дескрипторов.

Жесткие значения файловых дескрипторов: Жесткие ограничения значений — это те ограничения файлов, которые могут быть изменены только пользователем root. Пользователи без полномочий root не могут изменить значение жесткого ограничения.

Мы можем проверить ограничение жесткого значения, используя следующую команду:

$ ulimit -Hn

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

Мы можем проверить предел мягкого значения, используя следующую команду:

$ ulimit -Sn

Методы изменения ограничения количества открытых файлов в Linux

1 ulimit команда:

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

Syntax : ulimit [options [limit]]

a.) -a (Передача текущих настроек): — аргумент, который заставляет ulimit отображать текущие настройки

Чтобы показать текущее ограничение, используйте следующую команду:

ulimit -a | grep open

б.) -f (Ограничения файлов): аргумент ограничивает размер файлов, которые могут быть созданы оболочкой.

c.) -H и -S (жесткие и мягкие ограничения) уже обсуждались выше.

Теперь для редактирования предела используйте следующую команду: -

 ulimit -n 3000 

Но это значение будет сброшено, если вы перезагрузите компьютер или выйдете из системы.

Для постоянного изменения значения нам необходимо отредактировать один из файлов конфигурации пользователя (.bashrc или .profile) или общесистемные файлы конфигурации (/etc/bashrc или /etc/profile), добавив следующую команду в конце файл:-

# vim .bash_profile

ulimit -n 3000

Теперь изменения являются постоянными, даже если вы перезагрузите компьютер, они не изменятся.

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

Еще один лучший способ изменить лимит открытых файлов — использовать этот модуль PAM, который называется pam_limits. Мы должны настроить его, отредактировав файл /etc/security/limits.conf.

В этом файле конфигурации есть 4 основных поля. Они есть:-

  1. домен : Домен описывает конкретную единицу, к которой применяется ограничение, которое может быть именем пользователя, именем группы (с синтаксисом формы @groupname) или подстановочным знаком звездочки ( * ) (ограничения подстановочных знаков не применяются к root).
  2. type : Тип указывает, является ли ограничение жестким или мягким.
  3. item : указывает тип ограничиваемого элемента. Это может быть core (ограничивает размер файлов ядра), fsize (максимальный размер файла), data (максимальный размер данных), sizeetc.
  4. value : значения, которые будут применяться к лимиту.

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

# vim /etc/security/limits.conf

*       hard    nofile  21000

*       soft    nofile  16000

Теперь отредактируйте файл /etc/pam.d/login.

# vim /etc/pam.d/login

session required pam_limits.so

И вы закончили изменять лимит открытых файлов.