Linux 使用sudo ulimit时未找到命令

Linux 使用sudo ulimit时未找到命令,linux,shell,ubuntu-12.04,Linux,Shell,Ubuntu 12.04,我用的是Ubuntu12.04,我在上面运行ulimit-n,它显示1024, 我想将打开的文件限制从1024增加到65535,因此我尝试了以下命令: sudo ulimit -n 65535 但我得到了以下错误: sudo: ulimit: command not found 如何将文件限制从1024增加到65535?任何帮助都将不胜感激。ulimit是一个类似于cd的shell内置程序,而不是一个单独的程序sudo查找要运行的二进制文件,但没有ulimit二进制文件,这就是您收到错误消息

我用的是Ubuntu12.04,我在上面运行ulimit-n,它显示1024, 我想将打开的文件限制从1024增加到65535,因此我尝试了以下命令:

sudo ulimit -n 65535
但我得到了以下错误:

sudo: ulimit: command not found

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

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

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

要执行此操作,请运行:

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

您将获得一个新的shell,没有root权限,但是限制提高了。
exec
会使新的shell使用
sudo
权限替换进程,因此在退出该shell后,您不会意外地再次以root用户身份结束。

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

关于通用计算硬件和软件的问题对于堆栈溢出来说是不合适的,除非它们直接涉及主要用于编程。你可能会得到帮助。这个问题对mongodb很有用,添加了这个标签。unix上的新问题:轻微的调整对我来说非常合适:sudo sh-c“ulimit-u 1000000&&ulimit-n 100000&&exec su$LOGNAME”注意,这为用户提供了一个宽松的环境。谢谢。实际上,我还不明白
sudo sh-c“ulimit-c1024&&exec su$LOGNAME”
如何解决任何问题。谢谢。另一种解释