我正在尝试安装389-ds,它给了我这个警告:
WARNING: There are only 1024 file descriptors (hard limit) available, which limit the number of simultaneous connections.
我理解文件描述符,但我不了解软和硬限制.
当我运行cat / proc / sys / fs / file-max时,我回到590432.这应该意味着我可以打开最多590432个文件(即最多有590432个文件描述符).
但是当我运行ulimit时,它会给我不同的结果:
$ulimit
unlimited
$ulimit -Hn # Hard limit
4096
$ulimit -Sn # Soft limit
1024
但ulimit的硬/软限制是什么,它们与/ proc / sys / fs / file-max中存储的数量有什么关系?
解决方法:
根据the kernel documentation,/ proc / sys / file-max是内核在阻塞之前将分配的最大,全局,全局文件描述符数.这是内核的限制,而不是您当前的用户.所以你可以打开590432,只要你在一个空闲系统上独自一人(单用户模式,没有运行守护进程).
请注意,文档已过期:文件已经过了很长时间的proc / sys / fs / file-max.感谢Martin Jambon指出这一点.
The difference between soft and hard limits is answered here, on SE.您可以作为普通用户提高或降低软限制,前提是您没有超出硬限制.您还可以降低硬限制(但不能再为此过程再次提高).作为超级用户,您可以提高和降低硬限制和软限制.双限制方案用于实施系统策略,但也允许普通用户为自己设置临时限制,然后更改它们.
请注意,如果您尝试将硬限制降低到软限制以下(并且您不是超级用户),则会返回EINVAL(无效参数).
因此,在您的特定情况下,ulimit(与ulimit -Sf相同)表示您对shell及其子进程写入的文件的大小没有软限制. (在大多数情况下,这可能是一个好主意)
您的其他调用,ulimit -Hn报告-n限制(最大打开文件描述符数),而不是-f限制,这就是软限制似乎高于硬限制的原因.如果你输入ulimit -Hf你也会得到’无限’.