В Linux - установите максимальное количество открытых файлов на неограниченное количество. Возможный?
Можно ли установить максимальное количество открытых файлов в какое-то "бесконечное" значение или оно должно быть числом?
У меня было требование установить ограничение дескриптора для пользователя демона, чтобы оно было "неограниченным", и я пытаюсь определить, возможно ли это или как это сделать. Я видел, что некоторые списки рассылки ссылаются на значение "max", которое можно использовать (например, в "myuser hard nofile max"), но до сих пор справочные страницы и ссылки, с которыми я ознакомился, не подтверждают это.
Если я не могу использовать 'max' или подобное, я хотел бы знать, как определить (максимальное количество файлов) (теоретически), поэтому у меня есть основания для любого числа, которое я выберу. Я не хочу использовать 100000000 или что-то еще, если есть более разумный способ получить верхнюю границу.
Я использую RHEL 5, если это важно.
Обновление: я идиот, когда дело доходит до написания вопросов. В идеале я хотел бы сделать это в файле limit.conf (отсюда и "max"). Это меняет какие-либо ответы?
Спасибо за комментарии. Это для экземпляра JBOSS, а не для демона, который я пишу, поэтому я не знаю, полезен ли мне setrlimit(). Тем не менее, Джефроми - мне действительно нравится определение Бесконечности:) Я видел сообщение, в котором говорится, что файловый дескриптор "две шорты и указатель", поэтому я должен быть в состоянии вычислить приблизительную верхнюю границу.
2 ответа
POSIX позволяет вам установить RLIMIT_NOFILE
ограничение ресурса до RLIM_INFINITY
с помощью setrlimit()
, Это означает, что система не будет применять этот лимит ресурсов. Конечно, вы все равно будете ограничены реализацией (например, MAXINT
) и любые другие ограничения ресурсов (например, доступная память).
Обновление: RHEL 5 имеет максимальное значение 1048576 (2 20) для этого предела (NR_OPEN
в /usr/include/linux/fs.h
), и не примет большее значение, включая бесконечность, даже для корня. Итак, на RHEL 5 вы можете использовать это значение в /etc/security/limits.conf
и это так близко, как вы собираетесь добраться до бесконечности.
Не так давно был применен патч ядра Linux, позволяющий установить этот предел на бесконечность, однако с тех пор он был отменен в результате непредвиденных последствий.
Попробуйте линию
<domain> -
замена <domain>
с именем пользователя, в простейшем случае.
Страница руководства limit.conf говорит
- for enforcing both soft and hard resource limits together. Note, if you specify a type of '-' but neglect to supply the item and value fields then the module will never enforce any limits on the specified user/group etc. .