在SSH进入运行Amazon Linux AMI的EC2实例后,我尝试了:
ulimit -n 20000
...并收到以下错误:
-bash: ulimit: open files: cannot modify limit: Operation not permitted
但是,shell允许我减少此数字,仅适用于当前会话。
无论如何增加 EC2实例上的ulimit (永久)?
答案 0 :(得分:63)
实际上,通过ulimit
命令更改值仅适用于当前的shell会话。如果要永久设置新限制,则必须编辑/etc/security/limits.conf
文件并设置硬限制和软限制。这是一个例子:
# <domain> <type> <item> <value>
* soft nofile 20000
* hard nofile 20000
保存文件,注销,再次登录并通过ulimit -n
命令测试配置。希望它有所帮助。
P.S。 1:记住以下几点:
P.S。 2:/etc/security/limits.d/
中的其他文件可能会影响limits.conf
中的配置。
答案 1 :(得分:2)
我没有足够的代表点数来发表评论......抱歉我的新回复,但也许这可以防止某人浪费一个小时。
Viccari 的回答终于为我解决了这个头疼问题。每个其他来源都告诉您编辑limits.conf 文件,如果这不起作用,请添加
session required pam_limits.so
到 /etc/pam.d/common-session
文件
不要这样做!
我正在运行一个 Ubuntu 18.04.5 EC2 实例,这 使我完全无法使用 SSH。我可以登录,但是当它让我进入提示时,它断开了我的连接(我什至看到了所有的欢迎信息和内容)。详细显示这是最后一个错误:
fd 1 is not O_NONBLOCK
我无法找到这意味着什么的答案。因此,在关闭实例后,等待大约一个小时对卷进行快照,然后将其安装到另一个正在运行的实例,我删除了对 common-session
文件和 bam 的编辑,SSH 登录再次工作。
对我有用的解决方法是在 /etc/security/limits.d/
文件夹中查找文件并对其进行编辑。
(不,我不需要重启来获得新的限制,只需注销并重新登录)
答案 2 :(得分:0)
谢谢您的回答。对我来说,仅更新/etc/security/limits.conf是不够的。仅“打开文件” ulimit -n得到更新,而nproc没有得到更新。更新/etc/security/limits.d/任何文件后,nproc“ ulimit -u”也进行了更新。
步骤:
sudo vi /etc/security/limits.d/whateverfile
sudo vi /etc/security/limits.conf
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
sudo reboot
P.S。我无法将其添加为评论,因此必须将其发布为答案。