在CentOS上增加ulimit

我们有一个CentOS框,我试图增加用户可以打开的文件的最大数量。 目前当我运行ulimit -Sn我得到1024ulimit -Hn4096 。 我需要6000左右的数字。

/etc/sysctl.conf我设置了fs.file-max = 100000 。 在/etc/security/limits.conf我有以下设置:

 username soft nofile 6000 username hard nofile 65535 

我已经注销并以usernamelogin,但仍然没有看到我的更改。 我需要什么来改变这个值?

所有我在/etc/security/limits.d都是90-nproc.conf 。 我也确保在我的.bash_profile或.bashrc中不会调用ulimit。

当我运行sysctl -p它吐出我想要的设置,并显示我想要的fs.file-max的值。 但是当我运行ulimit -Sn ,我得到了1048.如果我尝试运行sysctl --system我得到error: Unknown parameter "--system"

要强制再次读取/etc/sysctl.conf ,请运行sysctl -p

文件/etc/security/limits.conf由loginshell读取,如果在GUI中,你应该closures活动会话窗口。 对于远程login,它会在重新login时生效。

正如另一张海报所说的,你需要让sysctl在正在运行的内核中设置值。 有几种方法可以在不重新引导的情况下设置值:

 sysctl -p /etc/sysctl.conf sysctl -w fs.file-max=100000 sysctl --system 

恕我直言,最后一种方法是最好的,因为它复制设置将在启动时应用的顺序(因此,如果你有冲突,它将变得明显)。

注意:我不确定你正在使用哪个版本的CentOS,但至less7我遇到了一个问题,如果dracut由于某种原因重新编译initramfs(比如安装一个新的内核模块),它会复制/etc/sysctl.*的内容插入到initramfs中,然后在该阶段将由systemd-sysctl执行,即使之后您将这些条目从/etc/sysctl.conf中删除。

在我的环境中,我编辑了systemd dracut模块以从该环境中排除/etc/sysctl.*(因为rootfs被挂载并且systemd-sysctl再次运行,这些设置将被设置)。 这只是一个可能遇到的问题。