Linux上的最大打开文件限制是多少?

时间:2014-07-25 12:29:52

标签: linux ulimit

在Linux上,当进程打开文件时,操作系统将检查最大打开文件限制。

如果限制是1024,这个数字的意思是什么?

是否代表

  • 流程打开的文件数
  • 拥有该进程的用户打开的文件数
  • 当前OS中所有已打开文件的数量?

4 个答案:

答案 0 :(得分:13)

您可以通过ulimit -a命令检查系统的软限制和硬限制。

  1. 软限制只是当前强制执行的限制。
  2. 硬限制标记设置软限制不能超过的最大值。
  3. 任何用户都可以设置软限制,而硬限制只能由root更改。限制是流程的属性。创建子进程时会继承它们,因此应在init脚本的系统初始化期间设置系统范围限制,并且应在用户登录期间设置用户限制,例如使用pam_limits

    机器启动时经常会设置默认值。因此,即使您可能在单个shell中重置ulimit,您可能会发现它在重新引导时重置为先前的值。如果要更改默认值,可能需要为启动ulimit命令grep启动脚本。

    如果限制为1024,则表示您/进程可以打开最多1024个文件。如果超出此限制,则表示openpipedup系统调用将失败:

      

    RLIMIT_NOFILE:

         

    指定的值大于此进程可以打开的最大文件描述符编号。尝试(open(2)pipe(2)dup(2)等)超出此限制会产生错误EMFILE

答案 1 :(得分:2)

每个进程有多个打开的文件描述符 。它们都可以引用相同的文件或不同的文件。

您可以在shell中查看ulimit -a的当前限制,或使用getrlimit编程。系统范围限制在/etc/security/limits.conf中设置。

Linux上的文件系统对象模型是:

file descriptor -> file description -> dentry -> inode
  1. 文件描述符是应用程序使用的整数。
  2. 文件描述是一个或多个文件描述符所引用的内核数据结构。
  3. dentry 是文件名。一个文件可以有多个名称(硬链接)。
  4. inode 是文件内容。
  5. dup为同一文件描述创建一个新的文件描述符。 open创建新文件描述符和文件描述。

答案 2 :(得分:0)

根据我的理解,这意味着每个用户的打开文件(描述符)的最大数量

编辑: 实际上,limits.conf为每个用户设置了这个值:

* hard nofile 1024

表示所有用户的硬限制(全部为<)>

或者它可以这样设置:

myuser hard nofile 1024

表示用户 myuser

的1024限制

答案 3 :(得分:0)

如果是linux,请验证以下内容的输出:

// scroll reveal article
window.sr = new ScrollReveal({ reset: false });
sr.reveal('ARTICLE[!=style]', {
   duration: 1000
});  

它将告诉您系统中打开文件的数量限制是多少,因为linux中有一种方法可以限制打开文件的数量,并且可以将打开文件的数量限制设置为无限制,从而可以解决此问题。