使用sudo ulimit时找不到命令

时间:2013-07-05 07:47:47

标签: linux shell ubuntu-12.04

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

sudo ulimit -n 65535

但是我收到以下错误:

sudo: ulimit: command not found

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

2 个答案:

答案 0 :(得分:100)

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

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

要执行此操作,请运行:

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

并且您将获得一个没有root权限的新shell,但具有提升的限制。 exec导致新shell以sudo权限替换进程,因此在退出该shell后,您不会意外地以root用户身份结束。

答案 1 :(得分:0)

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