我在使用 Ubuntu 17.04。尝试增加打开文件限制,但我在网上找到的所有说明都不起作用。我可以增加到 4096,但不能超过这个数字。
$ ulimit -n
1024
$ ulimit -n 4096
$ ulimit -n
4096
这样可以,但是这样不行:
$ ulimit -n 4097
bash: ulimit: open files: cannot modify limit: Operation not permitted
这似乎是由于硬限制造成的:
$ ulimit -Hn
4096
我已尝试将这些行添加到 /etc/security/limits.conf:
* hard nofile 65535
* soft nofile 65535
root soft nofile 65535
root hard nofile 65535
还将此行添加到 /etc/pam.d/common-session 和 /etc/pam.d/common-session-noninteractive:
session required pam_limits.so
自从这样做之后,我重启了电脑。对 limits.conf 的更改似乎没有影响任何东西。硬限制仍然停留在 4096,阻止我进一步提高。如何增加我的打开文件限制?
以下是一些额外的配置信息:
$ cat /proc/sys/fs/file-max
1624668
答案1
好吧,我终于搞明白了。我设置的限制/etc/security/limits.conf
确实被应用了,但并没有应用到图形登录。这可以从终端窗口进行验证:
$ ulimit -n
4096
$ su mkasberg
Password:
$ ulimit -n
65535
进一步的研究让我得出了这个结论错误报告,这让我找到了正确的方向。为了修改登录 shell 使用的限制,我们需要将以下行添加到/etc/systemd/user.conf
:
DefaultLimitNOFILE=65535
该更改有效,但仅影响软限制。(我们的硬限制仍为 4096。)为了影响硬限制,我们必须进行/etc/systemd/system.conf
相同的修改。
我所做的更改/etc/pam.d
不一定;它已经可以工作了,至少在 Ubuntu 上是这样。此外,没有必要在 中添加行root
和;仅添加用户名(在我的情况下)就足够了。*
limits.conf
mkasberg
总之
如果您想增加显示的限制ulimit -n
,您应该:
修改
/etc/systemd/user.conf
并/etc/systemd/system.conf
添加以下行(这负责图形登录):DefaultLimitNOFILE=65535
使用以下几行进行修改
/etc/security/limits.conf
(这处理非 GUI 登录):mkasberg hard nofile 65535 mkasberg soft nofile 65535
重新启动计算机以使更改生效。
答案2
不需要在/etc/security/limits.conf
文件中更改任何内容,如果您使用 systemd,它将被忽略。
(复制修改后的回答另一个问题在网络上...)
对于那些不想编辑默认文件的人来说,还有一个替代/etc/systemd/system.conf
方案/etc/systemd/user/conf
:
/etc/systemd/system.conf.d/limits.conf
创建一个包含以下内容的新文件:[Manager] DefaultLimitNOFILE=65535
systemctl daemon-reexec
以 root 身份运行注销并再次登录
使用 检查您的新限制
ulimit -n
。
请参阅systemd-system.conf
手册页了解详情。
答案3
TL;DR 我感觉需要集中答案,这样更容易找到。我花了很长时间才把所有部分拼凑起来,让它正常工作……
有 2 个地点需要考虑。
GUI 会话
$ grep DefaultLimitNOFILE /etc/systemd/system.conf DefaultLimitNOFILE=65535
或者更好的是:
$ grep NOFILE /etc/systemd/system.conf.d/limits.conf DefaultLimitNOFILE=65535
shell 环境
$ grep nofile /etc/security/limits.conf user soft nofile 65535 user hard nofile 65535`
或者更好的是:
$ grep nofile /etc/security/limits.d/user.conf user soft nofile 65535 user hard nofile 65535
修改上述文件中的设置后,重启然后使用以下命令检查限制:
ulimit -n -Hn -Sn
答案4
使用 Ubuntu 17.04 我得到了所描述的硬限制:
[email protected]:~$ ulimit -Hn
4096
我可以使用来降低它ulimit
,但不能增加它,就像问题所描述的那样。ulimit
手册描述:
只有 root 可以增加硬限制。
/etc/security/limits.conf
因此我尝试像这样设置一个更高的限制:
user hard nofile 9999
并且新的登录ssh localhost -l user
给了我新的限制:
[email protected]:~$ ulimit -Hn
9999
我希望这对你也有用。