在Linux上 - 将最大打开文件设置为无限制。可能?

时间:2009-07-31 14:41:21

标签: linux kernel redhat

是否可以将打开文件的最大数量设置为某个“无限”值,还是必须是数字?

我要求将守护程序用户的描述符限制设置为“无限制”,并且我正在尝试确定是否可行或如何执行此操作。我已经看到一些邮件列表引用了可以使用的“最大”值(如:“myuser hard nofile max”,但到目前为止,我咨询过的手册页和参考文献都不支持。

如果我不能使用'max'或类似的,我想知道如何确定最大文件数(理论上),所以我有一些基础可以选择任何数字。如果有更合理的方法来获得上限,我不想使用100000000或其他东西。

如果它很重要,我正在使用RHEL 5.

更新:在撰写问题时,我是个白痴。理想情况下,我想在limits.conf文件中执行此操作(这是“max”的来源)。这会改变任何答案吗?


感谢您的评论。这是针对JBOSS实例而不是我正在编写的守护进程所以我不知道setrlimit()是否对我有用。但是,Jefromi - 我确实喜欢Infinity的定义:)我看到一篇帖子暗示文件描述符是“两个短裤和一个指针”,所以我应该能够计算出近似的上限。

2 个答案:

答案 0 :(得分:35)

POSIX允许您使用setrlimit()RLIMIT_NOFILE资源限制设置为RLIM_INFINITY。这意味着系统不会强制执行此资源限制。当然,您仍然会受到实施(例如MAXINT)和任何其他资源限制(例如可用内存)的限制。

更新:此限制的最大值为1048576(2 20 )(NR_OPEN中为/usr/include/linux/fs.h),并且不接受任何更大的值,包括无穷大,即使是root。因此,在RHEL 5上,您可以在/etc/security/limits.conf中使用此值,这与您将无限制地接近。

不久前a Linux kernel patch已应用{}允许此限制设置为无穷大,但it has since been reverted as a result of unintended consequences

答案 1 :(得分:1)

尝试

<domain>    -

在最简单的情况下,用用户名替换<domain>

limits.conf man page

-
    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. .