在Linux上,当进程打开文件时,操作系统将检查最大打开文件限制。
如果限制是1024,这个数字的意思是什么?
是否代表
答案 0 :(得分:13)
您可以通过ulimit -a
命令检查系统的软限制和硬限制。
任何用户都可以设置软限制,而硬限制只能由root更改。限制是流程的属性。创建子进程时会继承它们,因此应在init脚本的系统初始化期间设置系统范围限制,并且应在用户登录期间设置用户限制,例如使用pam_limits
。
机器启动时经常会设置默认值。因此,即使您可能在单个shell中重置ulimit,您可能会发现它在重新引导时重置为先前的值。如果要更改默认值,可能需要为启动ulimit命令grep启动脚本。
如果限制为1024,则表示您/进程可以打开最多1024个文件。如果超出此限制,则表示open
,pipe
和dup
系统调用将失败:
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
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中有一种方法可以限制打开文件的数量,并且可以将打开文件的数量限制设置为无限制,从而可以解决此问题。