ulimit PICKLE:“不允许操作”和“找不到命令”

ulimit PICKLE:“不允许操作”和“找不到命令”

我正在尝试增加当前用户打开文件的最大数量

> 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

问题

  1. 如何增加ulimit?
  2. 为什么会发生这种情况?

使用 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 用户并尝试相同的操作。

相关内容