我使用的是ubuntu 12.04,运行ulimit -n,显示1024, 我想将我的打开文件限制从1024增加到65535,所以我尝试了以下命令:
sudo ulimit -n 65535
但是我收到以下错误:
sudo: ulimit: command not found
如何将文件限制从1024增加到65535?任何帮助将不胜感激。
答案 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脚本。