我正在尝试增加当前用户打开文件的最大数量
> ulimit -n
1024
我尝试增加并失败如下
> ulimit -n 4096
bash: ulimit: open files: cannot modify limit: Operation not permitted
所以我做了自然的事情并尝试在临时许可下运行,但失败了
> sudo ulimit -n 4096
sudo: ulimit: command not found
问题
- 如何增加ulimit?
- 为什么会发生这种情况?
使用 Fedora 14
答案1
ulimit
是 shell 内置命令,不是外部命令。它需要内置,因为它作用于 shell 进程本身,例如cd
:限制,如当前目录,是该特定进程的属性。
sudo bash -c 'ulimit -n 4096'
可以,但它会改变 only 调用的 bash 进程的限制sudo
,这对你没有帮助。
每个限制有两个值:硬限制和软限制。只有root才能提高硬限制;任何人都可以降低硬限制,并且可以在任一方向修改软限制,唯一的限制是它不能高于硬限制。软限制是重要的实际值。
因此,您需要安排所有进程对打开文件的硬限制至少为 4096。您可以将软限制保持在 1024。在启动需要大量文件的进程之前,请提高软限制。在 中/etc/security/limits.conf
,添加行
paislee hard nofile 4096
paislee soft nofile 1024
其中paislee
是您要运行进程的用户名。在启动您想要更高限制的进程的 shell 中,运行
ulimit -Sn unlimited
将软限制提高到硬限制。
答案2
打开文件/etc/security/limits.conf
并添加行<user> soft nofile <value>
.使用ulimit
更改为 root 用户并尝试相同的操作。