命令没有find当使用sudo ulimit

我正在使用Ubuntu 12.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权限replace进程,所以在你退出shell之后,你不会不小心以root身份结束。

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