56

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

sudo ulimit -n 65535

但我收到以下错误:

sudo: ulimit: command not found

如何将文件限制从 1024 增加到 65535?任何帮助将不胜感激。

4

2 回答 2

113

ulimit是一个内置的 shell cd,而不是一个单独的程序。sudo寻找要运行的二进制文件,但没有ulimit二进制文件,这就是您收到错误消息的原因。您需要在 shell 中运行它。

但是,虽然您确实需要成为 root 才能将限制提高到 65535,但您可能不想以 root 身份运行您的程序。因此,在提高限制后,您应该切换回当前用户。

为此,请运行:

sudo sh -c "ulimit -n 65535 && exec su $LOGNAME"

你会得到一个新的 shell,没有 root 权限,但是有更高的限制。这exec会导致新的 shell 用sudo特权替换进程,因此在退出该 shell 后,您不会意外地再次以 root 身份结束。

于 2013-07-05T08:05:01.347 回答
0

过去我不得不处理类似的问题。由于 shell 脚本没有 setuid 机制(因为它不安全),我发现编写一个带有 setuid 的简单 C 包装器就足够了,然后使用系统调用来修改正在运行的进程的 ulimit,然后再删除权限并执行你的 shell脚本。

于 2013-07-05T08:14:35.227 回答