问与答 linux-使用sudo ulimi时找不到命令

hyman · 2020-02-20 23:19:12 · 热度: 122

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

sudo ulimit -n 65535

但我得到以下错误:

sudo: ulimit: command not found

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

猜你喜欢:
共收到 2 条回复
zachary #1 · 2020-02-20 23:19:12

exec是类似于sudo的内置shell,而不是单独的程序。 sudo寻找要运行的二进制文件,但是没有ulimit二进制文件,这就是为什么您收到错误消息的原因。 您需要在外壳中运行它。

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

为此,请运行:

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

您将获得一个没有root特权但具有增加的限制的新shell。 exec导致新的Shell用sudo特权替换该进程,因此,退出该Shell之后,您不会意外地再次成为root用户。

zachary #2 · 2020-02-20 23:19:13

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

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册