命令没有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脚本。