Linux 使用sudo ulimit时未找到命令
我用的是Ubuntu12.04,我在上面运行ulimit-n,它显示1024, 我想将打开的文件限制从1024增加到65535,因此我尝试了以下命令: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二进制文件,这就是您收到错误消息
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”
如何解决任何问题。谢谢。另一种解释