我正在使用ubuntu 12.04,在其上运行ulimit -n,它显示1024,我想将打开文件的限制从1024增加到65535,所以我尝试了以下命令:
sudo ulimit -n 65535
但我得到以下错误:
sudo: ulimit: command not found
如何将文件限制从1024增加到65535? 任何帮助将不胜感激。
exec是类似于sudo的内置shell,而不是单独的程序。 sudo寻找要运行的二进制文件,但是没有ulimit二进制文件,这就是为什么您收到错误消息的原因。 您需要在外壳中运行它。
exec
sudo
ulimit
但是,虽然您确实需要以root用户身份才能将限制提高到65535,但您可能不想以root用户身份运行程序。 因此,提高限制后,您应该切换回当前用户。
为此,请运行:
sudo sh -c "ulimit -n 65535 && exec su $LOGNAME"
您将获得一个没有root特权但具有增加的限制的新shell。 exec导致新的Shell用sudo特权替换该进程,因此,退出该Shell之后,您不会意外地再次成为root用户。
过去,我不得不处理类似的问题。 由于没有shell脚本的setuid机制(因为它是不安全的),我发现用setuid编写一个简单的C包装程序就足够了,然后在删除特权并执行shell之前使用系统调用来修改正在运行的进程的ulimit 脚本。