须藤:ulimit:找不到命令

sun*_*npy 31 sudo limit

在 Ubuntu 12.04 上,我运行了ulimit -n,它显示 1024。我想将打开文件限制从 1024 增加到 65535,所以我尝试了以下命令:

sudo ulimit -n 65535
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

sudo: ulimit: command not found
Run Code Online (Sandbox Code Playgroud)

如何将文件限制从 1024 增加到 65535?

sca*_*cai 38

限制是特定于过程的。ulimit是 shell 内置的,只能更改此 shell 和从此 shell 启动的进程的限制。sudo ulimit没有任何意义。即使它不会失败,它也只会影响同时启动的进程sudo,没有任何影响。它无法更改当前会话的限制,因为它会创建一个新会话(对于用户 root)并在之后立即终止它。

为了将您的限制提高到硬限制之上,您必须为所有用户提高全局硬限制或为您的特定用户设置不同的限制。这些限制在( 或)中定义。编辑此文件并为您的用户创建一个新条目:/etc/security/limits.conf/etc/security/limits.d/

sunpy             hard    nofile           65535
Run Code Online (Sandbox Code Playgroud)

保存文件并打开一个新会话。之后ulimit -Hn在新会话中调用应该会显示打开文件数量的新限制。为了使用限制,您必须通过调用将当前的限制提高到限制ulimit -n 65535

当然,你也可以改变你的指定永久限制而不是在你的/etc/security/limits.conf。这样您就不必手动提高软限制,但新的限制将适用于您的每个会话。

哦,根据这个答案,您似乎必须编辑/etc/pam.d/common-session*并添加:

session required pam_limits.so
Run Code Online (Sandbox Code Playgroud)

如果还没有完成。否则这些限制将不适用于您的会话。

  • 请说明原因,以便改进。 (5认同)
  • 这个答案没有帮助。 (4认同)