46

在通过 SSH 连接到运行 Amazon Linux AMI 的 EC2 实例后,我尝试了:

ulimit -n 20000

...并得到以下错误:

-bash: ulimit: open files: cannot modify limit: Operation not permitted

但是,shell 允许我减少这个数字,仅适用于当前会话。

无论如何增加EC2实例的ulimit (永久)

4

3 回答 3

89

实际上,通过ulimit命令更改值仅适用于当前 shell 会话。如果要永久设置新限制,则必须编辑/etc/security/limits.conf文件并设置硬限制和软限制。这是一个例子:

# <domain> <type> <item>  <value>
    *       soft  nofile  20000
    *       hard  nofile  20000

保存文件,注销,再次登录,通过ulimit -n命令测试配置。希望能帮助到你。

PS 1:请记住以下几点:

  • 软限制:内核对相应资源强制执行的值。
  • 硬限制:作为软限制的上限。

PS 2: 中的其他文件/etc/security/limits.d/可能会影响limits.conf.

于 2012-07-05T13:23:37.370 回答
4

谢谢你的回答。对我来说,仅仅更新 /etc/security/limits.conf 是不够的。只有“打开的文件” ulimit -n 得到更新,而 nproc 没有得到更新。更新 /etc/security/limits.d/whateverfile 后,nproc "ulimit -u" 也得到了更新。

脚步:

  • sudo vi /etc/security/limits.d/whateverfile
  • 为 nproc/nofile 设置的更新限制
  • sudo vi /etc/security/limits.conf
*  soft  nproc  65535
*  hard  nproc  65535
*  soft  nofile 65535
*  hard  nofile 65535
  • 重启机器sudo reboot

PS我无法将其添加为评论,因此不得不发布作为答案。

于 2019-10-25T19:55:41.697 回答
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/夹中查找文件,然后编辑这些文件。

(不,我不需要重新启动来获得新的限制,只需注销并重新登录)

于 2021-02-04T01:25:47.293 回答