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

cal*_*bds 20 bash fedora sudo limit

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

> ulimit -n
1024
Run Code Online (Sandbox Code Playgroud)

我尝试增加和失败如下

> ulimit -n 4096
bash: ulimit: open files: cannot modify limit: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

所以我做自然的事情并尝试在临时许可下运行,但失败了

> sudo ulimit -n 4096
sudo: ulimit: command not found
Run Code Online (Sandbox Code Playgroud)

问题

  1. 如何增加ulimit?
  2. 为什么会这样?

使用 Fedora 14

Gil*_*il' 21

ulimit是一个内置的shell,而不是一个外部命令。它需要内置,因为它作用于 shell 进程本身,例如cd:限制,如当前目录,是该特定进程的属性。

sudo bash -c 'ulimit -n 4096'会起作用,但它会更改sudo仅调用的 bash 进程的限制,这对您没有帮助。

每个限制有两个值:硬限制和软限制。只有root才能提高硬限制;任何人都可以降低硬限制,软限制可以向任一方向修改,唯一的限制是它不能高于硬限制。软限制是重要的实际值。

因此,您需要安排所有进程对打开文件的硬限制至少为 4096。您可以将软限制保持在 1024。在启动需要大量文件的进程之前,请提高软限制。在 中/etc/security/limits.conf,添加行

paislee hard nofile 4096
paislee soft nofile 1024
Run Code Online (Sandbox Code Playgroud)

哪里paislee是您要作为其运行流程的用户的名称。在启动您想要更高限制的进程的 shell 中,运行

ulimit -Sn unlimited
Run Code Online (Sandbox Code Playgroud)

将软限制提高到硬限制。